通常,我让异常处理程序只处理非常具体的异常,这样代码就不会试图从没有预料到并且可能无法恢复的异常中恢复。
但是,有几个地方不可能提前知道哪些异常是完全有可能恢复的(因为对库的调用没有指定它们可能引发什么异常)。因此,在这些特殊情况下,我实际上捕获了所有的异常:on e:Exception ...。
但这也会处理EAssertionFailed异常,实际上不应该处理这些异常,因为它们意味着代码不正确。
因此,我已经开始编写这样的异常处理程序:
on e:Exception do
begin
if e is EAssertionFailed then
begin
raise;
我有一个自定义异常类定义为
public class CustomAuthenticationException extends RuntimeException{
}
在控制器方法中,我抛出此异常,如下所示
@RequestMapping(value="/tasks", method=RequestMethod.GET)
public String loadTasks(HttpServletRequest request){
try
{
if (!isAuthenticatedRequest(r
我们应该在哪里捕获异常
- In Layer Boundary (UI->BLL & BLL->DAL)
- In that methods where there is no interaction between Layers only some business logic present
如何在保存/删除某些DML语句执行的地方写入异常?
- What should I write in DAL end?
- What should I write in BLL end?
- What should I write in UI end?
In Get/Loa
堆栈跟踪如下:
c
b
a
main
假设c正在抛出FileNotFoundException。我使用b将此异常传播到throws。我正在传播异常,从b到a,从a到main。
当我在main中使用throws FileNotFoundException时,异常将在哪里传播?
因为我没有在main中为catch定义FileNotFoundException,而只定义了throws。
在.NET中,异常被包装在几层“外部异常”中是非常常见的,这些层提供了更多上下文数据。例如,在EF中,如果更新失败,则会得到与以下类似的异常:
EntityException
DbUpdateException
SqlException
我需要了解失败的数据几乎总是在SqlException中,那么其他两个方面的优势是什么呢?如果我在自定义库中使用EF,应该用自己的异常包装这个异常吗?就像MyCustomLibraryException: Could not update the data. See inner exception for details.