1

私はここでJavaを初めて使用するので、ここで作業している間は推測していました。

私はいくつかのコードを持っていました

    try {
        sendMailWithAttachment(); 

    } catch (AddressException e) {

        e.printStackTrace();
        sendMailWithoutAttachment();

    } catch (MessagingException e) {

        e.printStackTrace();
        sendMailWithoutAttachment();
    } 

しかし、「キャッチ」コードは実行されなかったので、キャッチしていない別のタイプの例外があるのではないかと推測し、それが何であるかを推測する代わりに、「一般的な」種類の例外をキャッチすることにし、やみくもにこれを試しました

    try {
        sendMailWithAttachment 

    } catch (AddressException e) {

        e.printStackTrace();
        sendMailWithoutAttachment();

    } catch (MessagingException e) {

        e.printStackTrace();
        sendMailWithoutAttachment();
    }  catch (Exception e) {
        e.printStackTrace();
        sendMailWithoutAttachment();
    }

そして、私のキャッチコードが突然実行されました。

ここで実際に何をしたか、そして最も重要なことは次のとおりです。

念のため、常に一般的な例外をキャッチできますか?

4

2 に答える 2

2

すべての例外はExceptionクラスをサブクラス化します。したがって、あなたが行ったことは、「AddressExceptionが発生した場合はこのように処理し、 aMessagingExceptionが発生した場合はこのように処理し、それ以外の場合はこのように処理する」と言われていますException

あなたの場合、3 つのcatchブロックはすべて同一であるため、ブロックをそのまま使用できますcatch (Exception e) { ... }が、これは不適切なコーディングと見なされます。通常、コードがスローする可能性のある例外を把握し、それらの各例外を適切に処理する必要があります。

于 2013-08-08T12:15:15.423 に答える