Posibil Duplicat: Cum pot scrie o Excepție de mine?
Aș dori pentru a crea un custom excepție în Java, cum fac asta?
...
try{
...
String word=reader.readLine();
if(word.contains(" "))
/*create custom exception*/
}
catch(){
Când am crea personalizate excepție cu arunca noi...
, am obține eroarea nedeclarat excepție...trebuie să fie prins sau declarate a fi aruncat
Tu ar trebui să fie capabil de a crea o excepție personalizată clasă care extinde "Excepție" clasă, de exemplu:
class WordContainsException extends Exception
{
// Parameterless Constructor
public WordContainsException() {}
// Constructor that accepts a message
public WordContainsException(String message)
{
super(message);
}
}
Utilizare:
try
{
if(word.contains(" "))
{
throw new WordContainsException();
}
}
catch(WordContainsException ex)
{
// Process message however you would like
}
Aveți nevoie pentru a crea o clasă care se extinde de "Excepție". Acesta ar trebui să arate astfel:
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);
}
}
Întrebarea dvs. nu specifică dacă această nouă excepție ar trebui să fie verificate sau neînregistrat.
După cum puteți vedea aici, cele două tipuri sunt diferite:
Verificat excepții sunt menite să semnaleze o situație problematică care ar trebui să fie manipulate de către producător care solicită metoda ta. Ar trebui să fie posibil pentru a recupera de la o astfel de excepție. Un bun exemplu în acest sens este o FileNotFoundException. Aceste excepții sunt subclase ale Excepții.
Debifat excepții sunt menite să reprezinte un bug în cod, o situație neașteptată care s-ar putea să nu fi capabil de a recupera de la. O NullPointerException este un exemplu clasic. Aceste excepții sunt subclase ale RuntimeException
Verificat excepție trebuie să fie manipulate de către metoda de asteptare, fie de a-l prinde și de a acționa în mod corespunzător, sau de aruncare la metoda de asteptare. Necontrolat excepții nu sunt menite să fie prins, chiar dacă este posibil să facă acest lucru.
Răspunsuri mari despre crearea personalizate excepție clase. Dacă intenționați să reutilizați excepția în cauză atunci mi-ar urma lor răspunsuri/sfaturi. Cu toate acestea, Dacă aveți nevoie doar de o scurtă excepție aruncat cu un mesaj atunci puteți folosi baza de excepție clasa pe loc
String word=reader.readLine();
if(word.contains(" "))
/*create custom exeception*/
throw new Exception("My one time exception with some message!");
}
Deoarece puteți crea și de a arunca excepții ar putea fi la fel de ușor ca
if ( word.contains(" ") )
{
throw new RuntimeException ( "Word contains one or more spaces" ) ;
}
Dacă doriți să fie mai mult formală, puteți crea o Excepție de clasă
class SpaceyWordException extends RuntimeException
{
}
Oricum, dacă utilizați RuntimeException
, noul "Excepție" va fi bifat.
Ca un programator atent va arunca de multe ori o excepție special pentru un eveniment, este de remarcat unele de uz general excepții, cum ar fi IllegalArgumentException
și IllegalStateException
și UnsupportedOperationException
. IllegalArgumentException
e preferatul meu:
throw new IllegalArgumentException("Word contains blank: " + word);
O excepție este o clasă ca oricare alta clasa, cu exceptia faptului ca se extinde de la Excepție
. Deci, dacă vă creați propria clasă
public class MyCustomException extends Exception
puteți arunca un astfel de exemplu cu
throw new MyCustomException( ... );
//using whatever constructor params you decide to use
Și aceasta ar fi interesant de citit
Ai nevoie doar pentru a crea o clasă care extinde Excepție (pentru un verificate excepție) sau orice subclasă de Excepție, sau RuntimeException (pentru o execuție de excepție) sau orice subclasă de RuntimeException.
Apoi, în codul dvs., trebuie doar să utilizați
if (word.contains(" "))
throw new MyException("some message");
}
Citiți tutorial Java. Acest lucru este lucruri de bază pe care fiecare dezvoltator Java ar trebui să știe: http://docs.oracle.com/javase/tutorial/essential/exceptions/