هل هناك ما يعادل Java من C #'s invalidoperationException؟ [مكرر
-
02-10-2019 - |
سؤال
هذا السؤال لديه بالفعل إجابة هنا:
أقوم بتحويل بعض التعليمات البرمجية C# إلى Java وأحتاج إلى تضمين استثناء يشبه InvalidOperationException من C#. هل يوجد شيء من هذا القبيل؟ هل هناك أيضًا قائمة بأنواع الاستثناءات المكافئة باللغتين؟ شكرًا.
أعتقد في حالتي الخاصة أن تكون غير قانونية هي الأنسب. شكرا لجميع الردود.
المحلول
المحتمل IllegalStateException
.
من ما قرأته عن InvalidOperationException: "الاستثناء الذي يتم طرحه عندما يكون استدعاء الطريقة غير صالح للحالة الحالية للكائن."
إلى عن على IllegalStateException
: "إشارات إلى أنه تم استدعاء طريقة في وقت غير قانوني أو غير مناسب. وبعبارة أخرى ، فإن بيئة Java أو Java ليست في حالة مناسبة للعملية المطلوبة."
اعتمادًا على كيفية استخدامك InvalidOperationException
, ، يمكن أن أرى أيضا IllegalArgumentException
و UnsupportedOperationException
كونك ما تريد. السابق يعني أنه ، بشكل عام ، الطريقة جيدة للاتصال ، تم تمريرها للتو القمامة هذه المرة ؛ هذا الأخير يعني أن الطريقة هي أبداً مناسب للدعوة إلى هذه الحالة (على عكس IllegalStateException
, ، مما يعني أنه قد يكون من المناسب استدعاء طريقة الموضوع في بعض الأحيان ، وليس فقط في الوقت الحالي).
أنا لست على علم بترجمة جافا العامة C# <=> Java.
نصائح أخرى
أشارني بيتر إلى رمز المثال (من MSDN)
void WriteLog()
{
if (!this.logFile.CanWrite)
{
throw new System.InvalidOperationException("Logfile cannot be read-only");
}
// Else write data to the log and return.
}
لذلك في هذا السياق ، يمكنك استخدام aluctionStateException ، على الرغم من أنه يقول:
يتم طرحه عند محاولة إجراء ما في وقت لا يكون فيه الجهاز الظاهري في الحالة الصحيحة.
ودولة VM غير القانونية ليست بالتأكيد هي القضية في المثال المرجعي أعلاه. هنا ، المشكلة هي أن الكائن غير صالح ، لأنه يشير إلى ملف تسجيل للقراءة فقط.
نصيحتي الخاصة: فقط حدد استثناء مخصص مثل
package com.pany.project;
public class InvalidOperationException extends RuntimeException {
// add constructors with call to super as needed
}
بالنسبة لي ، هذا أسهل بكثير من محاولة العثور على أفضل استثناء مناسب من java.lang
حزمة.