มีอะไรเหมือน. NET NotImplementedException
ใน Java หรือไม่
มีอะไรเหมือน. NET NotImplementedException
ใน Java หรือไม่
คำตอบ:
คอมมอนส์หรั่งมีมัน UnsupportedOperationException
หรือคุณอาจจะโยน
ฉันคิดว่าjava.lang.UnsupportedOperationException
เป็นสิ่งที่คุณกำลังมองหา
new UnsupportedOperationException("Not implemented yet")
- มีความสุข?
คุณสามารถทำได้ด้วยตัวเอง (นั่นคือสิ่งที่ฉันทำ) - เพื่อไม่ให้รำคาญกับการจัดการข้อยกเว้นคุณเพียงขยาย RuntimeException คลาสของคุณอาจมีลักษณะเช่นนี้:
public class NotImplementedException extends RuntimeException {
private static final long serialVersionUID = 1L;
public NotImplementedException(){}
}
คุณสามารถขยายเพื่อรับข้อความ - แต่ถ้าคุณใช้วิธีการตามที่ฉันทำ (นั่นคือเพื่อเตือนความจำว่ายังมีบางสิ่งที่ต้องนำไปใช้) โดยทั่วไปแล้วไม่จำเป็นต้องมีข้อความเพิ่มเติม
ฉันกล้าพูดว่าฉันใช้วิธีนี้เพียงอย่างเดียวในขณะที่ฉันอยู่ในกระบวนการพัฒนาระบบทำให้ฉันง่ายขึ้นที่จะไม่ติดตามว่าวิธีการใดที่ยังไม่ได้ใช้อย่างถูกต้อง :)
UnsupportedOperationException
ในความคิดของฉัน ตอนนี้ถ้ามีเพียง Java เท่านั้นที่จะเพิ่มสิ่งนี้ในไลบรารีทั่วไปของข้อยกเว้น!
ดังที่กล่าวไว้ JDK ไม่มีการแข่งขันที่ใกล้ชิด อย่างไรก็ตามทีมของฉันบางครั้งก็มีข้อยกเว้นดังกล่าวเช่นกัน เราอาจได้ไปกับUnsupportedOperationException
คำแนะนำอื่น ๆ ตามที่แนะนำ แต่เราชอบคลาสยกเว้นที่กำหนดเองในห้องสมุดฐานของเราที่มีการก่อสร้างไม่สนับสนุน:
public class NotYetImplementedException extends RuntimeException
{
/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/
@Deprecated
public NotYetImplementedException()
{
}
/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/
@Deprecated
public NotYetImplementedException(String message)
{
super(message);
}
}
วิธีการนี้มีประโยชน์ดังต่อไปนี้:
NotYetImplementedException
พวกเขารู้ว่ามีการวางแผนการใช้งานและถูกลืมหรือยังอยู่ระหว่างดำเนินการในขณะที่UnsupportedOperationException
พูด (ตามสัญญาการเก็บรวบรวม ) ว่ามีบางสิ่งที่จะไม่ถูกนำไปใช้ นั่นเป็นเหตุผลที่เรามีคำว่า "ยัง" ในชื่อคลาส นอกจากนี้ IDE สามารถแสดงรายการไซต์การโทรได้ง่ายimport
บรรทัด (JDK 9 แก้ไขสิ่งนี้ )ไม่มีไม่มีและอาจไม่อยู่ที่นั่นเพราะมีการใช้งานที่ถูกต้องเพียงเล็กน้อยเท่านั้น ฉันจะคิดสองครั้งก่อนที่จะใช้ นอกจากนี้ยังเป็นเรื่องง่ายที่จะสร้างตัวเอง
โปรดอ้างอิงการสนทนานี้เกี่ยวกับสาเหตุที่เป็นไปได้ใน. NET
ฉันเดาว่าเข้าUnsupportedOperationException
มาถึงแม้ว่ามันจะไม่ได้บอกว่าการดำเนินการไม่ได้ใช้งาน แต่ไม่ได้รับการสนับสนุนแม้แต่ นั่นอาจหมายความว่าไม่มีการใช้งานที่ถูกต้องเป็นไปได้ เหตุใดการดำเนินการจึงไม่ได้รับการสนับสนุน มันควรจะอยู่ที่นั่นไหม? ปัญหาการแยกอินเตอร์เฟสหรือการทดแทน Liskov อาจจะเกิดขึ้น?
ถ้ามันอยู่ในระหว่างดำเนินการฉันจะไปToBeImplementedException
แต่ฉันไม่เคยพบว่าตัวเองกำหนดวิธีที่เป็นรูปธรรมและจากนั้นปล่อยให้มันนานมากมันจะเป็นการผลิตและจะต้องมีข้อยกเว้นดังกล่าว