【Java:为什么要有自定义异常?】

时间:2022-12-02 20:30:04
如题。
既然Java已经有了健全的异常处机制(有很多类),为什么还要继承现有的异常,自定义自己的异常类呢??
再说了,就算自定义了一个新的异常,又能怎么样。

8 个解决方案

#1


Windows 系统还定义了几千个错误代码呢,意义何在?调用 API 难道不是只需要知道成功或失败就行了吗?好,那你现在打开一个文件,失败。失败了,那你怎么解决"打开失败"这个问题?就像错误代码,作用和异常一样。有些时候,我们的确不需要太关心失败信息,只需捕获一个 Exception 就行了。但有时我们的确得知道文件打不开究竟是什么原因?比如文件不存在了,或者读取权限不足了等等。有些甚至需要更详细的信息,以便各种错误代码下:1. 如何给打印出对应的友好日志信息。2. 如何根据不同错误代码解决问题。

#2


可是这些Exceptin不都是现成的吗,而且就算你继承了,不也只是改写以下构造方法,改变一下程序Crash时输出的结果吗?

#3


按你的意思,一个 Exception 就能走遍天下
那是不是  NullPointerException、ArrayIndexOutOfBoundsException、IOException、... 之类的全都可以不要,  
它们也都只是继承 Exception 换个错误消息模板而已

用的时候, 只要 new Exception(“不同消息”)  就行了。

#4


如果你不把 exception 分门别类, 把不同业务场景产生的异常,  定义成不同的类型

try {
// ...
} catch(Exception e) {
// 这里该如何对不同的异常做不同的处理错误,
// 分析 e.getMessage() 的消息格式吗来决定处理方式吗?
// ...
}

#5


根据自己的需求,出现异常的时候,做特殊的处理。。。不然就得在里面做区分。。。

#6


杀鸡用牛刀是不合理的

#7


初学者可以不考虑这个问题

#8


异常分类,业务中不同场景抛出不同异常,便于统一捕获并根据类型做进一步处理

#1


Windows 系统还定义了几千个错误代码呢,意义何在?调用 API 难道不是只需要知道成功或失败就行了吗?好,那你现在打开一个文件,失败。失败了,那你怎么解决"打开失败"这个问题?就像错误代码,作用和异常一样。有些时候,我们的确不需要太关心失败信息,只需捕获一个 Exception 就行了。但有时我们的确得知道文件打不开究竟是什么原因?比如文件不存在了,或者读取权限不足了等等。有些甚至需要更详细的信息,以便各种错误代码下:1. 如何给打印出对应的友好日志信息。2. 如何根据不同错误代码解决问题。

#2


可是这些Exceptin不都是现成的吗,而且就算你继承了,不也只是改写以下构造方法,改变一下程序Crash时输出的结果吗?

#3


按你的意思,一个 Exception 就能走遍天下
那是不是  NullPointerException、ArrayIndexOutOfBoundsException、IOException、... 之类的全都可以不要,  
它们也都只是继承 Exception 换个错误消息模板而已

用的时候, 只要 new Exception(“不同消息”)  就行了。

#4


如果你不把 exception 分门别类, 把不同业务场景产生的异常,  定义成不同的类型

try {
// ...
} catch(Exception e) {
// 这里该如何对不同的异常做不同的处理错误,
// 分析 e.getMessage() 的消息格式吗来决定处理方式吗?
// ...
}

#5


根据自己的需求,出现异常的时候,做特殊的处理。。。不然就得在里面做区分。。。

#6


杀鸡用牛刀是不合理的

#7


初学者可以不考虑这个问题

#8


异常分类,业务中不同场景抛出不同异常,便于统一捕获并根据类型做进一步处理