سؤال

هذا السؤال لديه بالفعل إجابة هنا:

أقوم بتحويل بعض التعليمات البرمجية 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 حزمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top