มีสถานการณ์ที่คุณอาจใช้พวกเขา แต่พวกเขาควรจะไม่บ่อยนัก สถานการณ์ที่ฉันอาจใช้อย่างใดอย่างหนึ่งรวมถึง:
- การบันทึกข้อยกเว้น; ขึ้นอยู่กับบริบทคุณอาจต้องการข้อยกเว้นที่ไม่สามารถจัดการได้หรือโพสต์ข้อความแทน 
- สถานการณ์ทางเทคนิคที่วนลูปเช่นการเรนเดอร์หรือการประมวลผลเสียงหรือการโทรกลับลิสต์บ็อกซ์ซึ่งพฤติกรรมจะแสดงให้เห็นถึงปัญหาการโยนข้อยกเว้นจะเข้าไปในทางและการบันทึกข้อยกเว้นอาจส่งผลให้ข้อความ . 
- โปรแกรมที่ไม่สามารถล้มเหลวได้แต่อย่างน้อยก็ควรมีการบันทึกบางอย่าง 
สำหรับแอปพลิเคชัน winforms ส่วนใหญ่ฉันพบว่าพอเพียงที่จะมีคำสั่งลองเดียวสำหรับผู้ใช้ทุกคน ฉันใช้วิธีการต่อไปนี้: (AlertBox เป็นเพียง MessageBox.Show wrapper)
  public static bool TryAction(Action pAction)
  {
     try { pAction(); return true; }
     catch (Exception exception)
     {
        LogException(exception);
        return false;
     }
  }
  public static bool TryActionQuietly(Action pAction)
  {
     try { pAction(); return true; }
     catch(Exception exception)
     {
        LogExceptionQuietly(exception);
        return false;
     }
  }
  public static void LogException(Exception pException)
  {
     try
     {
        AlertBox(pException, true);
        LogExceptionQuietly(pException);
     }
     catch { }
  }
  public static void LogExceptionQuietly(Exception pException)
  {
     try { Debug.WriteLine("Exception: {0}", pException.Message); } catch { }
  }
จากนั้นตัวจัดการเหตุการณ์ทุกคนสามารถทำสิ่งที่ชอบ:
  private void mCloseToolStripMenuItem_Click(object pSender, EventArgs pEventArgs)
  {
     EditorDefines.TryAction(Dispose);
  }
หรือ
  private void MainForm_Paint(object pSender, PaintEventArgs pEventArgs)
  {
     EditorDefines.TryActionQuietly(() => Render(pEventArgs));
  }
ในทางทฤษฎีคุณอาจมี TryActionSilently ซึ่งอาจดีกว่าสำหรับการแสดงผลการโทรเพื่อที่ข้อยกเว้นจะไม่สร้างข้อความจำนวนไม่รู้จบ