Apexでメールを送信するために使用するMessaging.sendEmailの処理では処理結果を「isSuccess()」で判定することができます。この「isSuccess()」で送信失敗時の処理を実行するには、わざとエラーになるデータを使用する必要があります。
しかし、単純に送信先アドレスを@のない不正な形式で実行してもisSuccessの判定が実行される前にExceptionエラーとして扱われてしまいます。
どのようなデータを使用すればExceptionエラーにならずに送信失敗にできるのか調べてみたところ次のサイトが見つかりました。
このサイトによると "Messaging.sendEmail(new Messaging.Email[] { email }, false);" のように「false」をつけることでExceptionエラーにならずに「isSuccess()」のエラー処理で処理を実行できるようになるとのことです。
試しに次のような処理で確認してみたところ問題なくエラー時の処理が実行されることを確認できました。
SendEmail処理を実装する場合には、「false」をつけてExceptionエラーを発生させないようにしておくと良さそうです。