|
|
1
1
是的,这绝对是默认策略。
是的,如果打电话的人可以想当然地对这种情况做些什么的话 和 要做到这一点,他们需要能够区分异常和其他异常。但这很罕见。
数据库依赖关系可能需要公开允许调用方指定库如何处理某些异常的设置(例如,
不,不是所有的例外。对于特定的异常,这是极有可能的,但我能想到的唯一可能的情况是,当我的库已经尝试处理异常(如上面的数据库场景中所述)并失败时,我可能会这样做。 |
|
|
2
2
自定义异常-当它们有意义时。由于框架中的一些通用异常,情况并非如此。 |
|
|
3
0
如果一个库包装了几个不同的类,这些类可能引发不同的异常,那么我不应该允许从内部到渗透出异常作为它们的原始类型。相反,它们应该包装在一个库特定的异常中,该异常尽可能清楚地与异常的原始类型相关。 例如,magicdatabaselibrary可以定义magicdatabaseexception,它依次具有一些派生的异常magicdatabasetimeoutexception、magicdatabaseauthenticationexception等。如果SQL Server数据库引发SQL Server超时异常(无论它调用什么),则应该是wrappe在magicDatabaseTimeoutException中。同样,对于可能发生的任何其他半预期异常。 如果不这样做,调用库的代码将没有实际的选择,只有使用“pokemon异常处理”,如果它有任何处理潜在数据库问题的希望。例如,如果调用代码应该处理用户提供凭证登录数据库而连接失败的情况,那么它需要能够捕获该异常。如果调用代码不知道将是哪种类型的异常,那么除了捕获每个异常之外,它所能做的就不多了,希望这是由于不正确的凭证或其他原因造成的,并向用户显示一条消息,说明连接失败。没有提供包装的异常那么有用。 |