หากมีวิธีการ
bool DoStuff() {
    try {
        // doing stuff...
        return true;
    }
    catch (SomeSpecificException ex) {
        return false;
    }
}
มันควรจะถูกเรียกว่าค่อนข้างIsStuffDone()?
ผู้ใช้ทั้งสองชื่ออาจตีความผิด: หากชื่อเป็นDoStuff()สาเหตุว่าทำไมจึงส่งคืนบูลีน หากชื่อIsStuffDone()ไม่ชัดเจนว่าวิธีการทำงานหรือตรวจสอบผลของมันเท่านั้น
มีแบบแผนสำหรับกรณีนี้หรือไม่? หรือวิธีการอื่นเป็นวิธีนี้ถือว่ามีข้อบกพร่อง? ยกตัวอย่างเช่นในภาษาที่มีพารามิเตอร์ที่ส่งออกเช่น C # voidตัวแปรสถานะบูลีนอาจจะส่งผ่านไปยังวิธีการที่เป็นหนึ่งและประเภทผลตอบแทนของวิธีการที่จะเป็น
แก้ไข: ในการจัดการข้อยกเว้นปัญหาเฉพาะของฉันไม่สามารถมอบหมายโดยตรงไปยังผู้โทรเพราะวิธีการเป็นส่วนหนึ่งของการใช้อินเตอร์เฟซ ดังนั้นผู้เรียกไม่สามารถเรียกเก็บเงินกับการจัดการกับข้อยกเว้นทั้งหมดของการใช้งานที่แตกต่างกัน ไม่คุ้นเคยกับข้อยกเว้นเหล่านั้น แต่โทรสามารถจัดการกับข้อยกเว้นที่กำหนดเองเช่นStuffHasNotBeenDoneForSomeReasonExceptionเป็นได้รับการแนะนำในคำตอบของ npinti และแสดงความคิดเห็น
booleanแทนที่หรือตัดผ่านข้อยกเว้นมักจะผิดเสมอ
                BadlyDesignedMethodInSeriousNeedOfRefactoring? และเพื่อตอบคำถามของคุณเกี่ยวกับข้อยกเว้น - ฉันจะให้ผู้โทรจัดการหรือจับพวกเขาแล้วโยนข้อยกเว้นที่กำหนดเองซึ่งหมายความว่า "วิธีนี้ไม่มีงาน" แบ่งปันและเพลิดเพลิน
                if (FirstMethodSucceeds(problem) or SecondMethodSucceeds(problem) or ...) Hurray(); else UniversalSolve(problem);มันจะทำให้ความรู้สึกที่จะเขียนสิ่งที่ต้องการ การทำเช่นเดียวกันกับข้อยกเว้น (กำหนดเอง) จะซับซ้อนกว่าอย่างไร้ประโยชน์