为什么在方法中抛出一般异常是不好的?

时间:2016-09-14 22:27:23

标签: java exception-handling

为什么通过方法抛出一般异常在Java中是不好的做法?

public class MyClickableFragment {

    public void initOnClickListiner(View clickableView) {
        clickableView.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                ClickedButtonInsideFragmentEvent event = new ClickedButtonInsideFragmentEvent();
                // add what you want to your event
                eventBus.post(event);                
            }
        ));
    }

    @Subscribe  
    public void onEvent(ClickedButtonInsideFragmentEvent event) {
        // Do what you want to do
    } 

}

1 个答案:

答案 0 :(得分:1)

当您通过方法抛出异常时,通常应该知道它是什么类型的异常。如果抛出一般异常而不是特定异常,则在引发异常(如果引发异常)时将丢失异常的特定细节。

例如,Float.parseFloat()抛出:

1)NullPointerException - >如果字符串为空

2)NumberFormatException - >如果字符串不包含可解析的浮点数。

如果是扔一般"例外"而不是" NullPointerException"和" NumberFormatException",无法知道是否引发了异常,因为字符串为null或字符串包含不可解析的浮点值。