Hoe een aangepaste uitzonderingstype in Java maken? [DUPLICEER]

Ik wil graag een aangepaste uitzondering in Java maken, hoe doe ik het?

...
try{
...
String word=reader.readLine();
if(word.contains(" "))
  /*create custom exception*/
}
catch(){

Wanneer ik mijn aangepaste uitzondering maak met throw new..., ik verkrijg ik de fout unreported exception...must be caught or declared to be thrown


Antwoord 1, Autoriteit 100%

U zou in staat moeten zijn om een ​​aangepaste uitzonderingsklasse te maken die de Exceptionklasse, bijvoorbeeld:

class WordContainsException extends Exception
{
      // Parameterless Constructor
      public WordContainsException() {}
      // Constructor that accepts a message
      public WordContainsException(String message)
      {
         super(message);
      }
 }

Gebruik:

try
{
     if(word.contains(" "))
     {
          throw new WordContainsException();
     }
}
catch(WordContainsException ex)
{
      // Process message however you would like
}

Antwoord 2, Autoriteit 48%

U moet een klasse maken die zich uitstrekt van Exception. Het zou er als volgt uit moeten zien:

public class MyOwnException extends Exception {
    public MyOwnException () {
    }
    public MyOwnException (String message) {
        super (message);
    }
    public MyOwnException (Throwable cause) {
        super (cause);
    }
    public MyOwnException (String message, Throwable cause) {
        super (message, cause);
    }
}

Uw vraag geeft niet aan of deze nieuwe uitzondering moet worden aangevinkt of niet.

Zoals je hierkunt zien, zijn de twee typen verschillend:

  • Aangevinkte uitzonderingen zijn bedoeld om een problematische situatie te signaleren die moet worden afgehandeld door de ontwikkelaar die uw methode aanroept. Het moet mogelijk zijn om van een dergelijke uitzondering te herstellen. Een goed voorbeeld hiervan is een FileNotFoundException. Die uitzonderingen zijn subklassen van Uitzondering.

  • Niet-aangevinkte uitzonderingen zijn bedoeld om een fout in uw code te vertegenwoordigen, een onverwachte situatie waarvan u mogelijk niet kunt herstellen. Een NullPointerExceptionis een klassiek voorbeeld. Die uitzonderingen zijn subklassen van RuntimeException

Aangevinkte uitzondering moetworden afgehandeld door de aanroepmethode, ofwel door deze te vangen en dienovereenkomstig te handelen, of door deze naar de aanroepmethode te gooien. Niet-aangevinkte uitzonderingen zijn niet bedoeld om te worden opgevangen, ook al is het mogelijk om dit te doen.


Antwoord 3, autoriteit 7%

Geweldige antwoorden over het maken van aangepaste uitzonderingsklassen. Als u van plan bent de betreffende uitzondering opnieuw te gebruiken, zou ik hun antwoorden / advies opvolgen. Als u echter alleen een snelle uitzondering nodig heeft die met een bericht wordt gegenereerd, kunt u ter plekke de basisuitzonderingsklasse gebruiken

String word=reader.readLine();
if(word.contains(" "))
  /*create custom exeception*/
  throw new Exception("My one time exception with some message!");
}

Antwoord 4, autoriteit 5%

Omdat je gewoon uitzonderingen kunt maken en weggooien, kan het net zo eenvoudig zijn als

if ( word.contains(" ") )
{
     throw new RuntimeException ( "Word contains one or more spaces" ) ;
}

Als u formeler wilt zijn, kunt u een uitzonderingsklasse maken

class SpaceyWordException extends RuntimeException
{
}

Hoe dan ook, als u RuntimeExceptiongebruikt, wordt uw nieuwe Exceptionuitgeschakeld.


Antwoord 5, autoriteit 5%

Omdat een zorgvuldige programmeur vaak een uitzondering maakt voor een speciale gebeurtenis, is het de moeite waard om enkele algemene uitzonderingen te noemen, zoals IllegalArgumentExceptionen IllegalStateExceptionen UnsupportedOperationException. IllegalArgumentExceptionis mijn favoriet:

throw new IllegalArgumentException("Word contains blank: " + word);

Antwoord 6, autoriteit 2%

Een uitzondering is een klasse zoals elke andere klasse, behalve dat deze zich uitstrekt van Exception. Dus als je je eigen klas maakt

public class MyCustomException extends Exception

je kunt zo’n instantie gooien met

  throw new MyCustomException( ... );
   //using whatever constructor params you decide to use

En ditis misschien een interessante lees


Antwoord 7

U hoeft alleen maar een klasse aan te maken die Exception uitbreidt (voor een gecontroleerde uitzondering) of een subklasse van Exception, of RuntimeException (voor een runtime-uitzondering) of een subklasse van RuntimeException.

Gebruik dan in je code

if (word.contains(" "))
    throw new MyException("some message");
}

Lees de Java-zelfstudie. Dit zijn basisdingen die elke Java-ontwikkelaar zou moeten weten: http://docs.oracle.com /javase/tutorial/essentieel/uitzonderingen/


Antwoord 8

U moet uw uitzondering ergens anders definiëren als een nieuwe klasse

public class YourCustomException extends Exception{
//Required inherited methods here
}

Dan kun je YourCustomException zo vaak gooien en vangen als je wilt.


Antwoord 9

U kunt uw eigen uitzondering maken door over te nemen van java.lang.Exception
Hieris een voorbeeld dat u daarbij kan helpen.

Other episodes