propias - propagacion de excepciones en java
¿Cómo crear un tipo de excepción personalizado en Java? (9)
Como puedes crear y lanzar excepciones, podría ser tan fácil como
if ( word.contains(" ") )
{
throw new RuntimeException ( "Word contains one or more spaces" ) ;
}
Si desea ser más formal, puede crear una clase de excepción
class SpaceyWordException extends RuntimeException
{
}
De cualquier forma, si usa RuntimeException
, su nueva Exception
quedará desmarcada.
Posible duplicado:
¿Cómo puedo escribir una excepción por mi cuenta?
Me gustaría crear una excepción personalizada en Java, ¿cómo lo hago?
...
try{
...
String word=reader.readLine();
if(word.contains(" "))
/*create custom exception*/
}
catch(){
Cuando creo mi excepción personalizada con throw new...
, unreported exception...must be caught or declared to be thrown
error unreported exception...must be caught or declared to be thrown
Como un programador cuidadoso arrojará a menudo una excepción para un IllegalArgumentException
especial, vale la pena mencionar algunas excepciones de propósito general como IllegalArgumentException
e IllegalStateException
y UnsupportedOperationException
. IllegalArgumentException
es mi favorito:
throw new IllegalArgumentException("Word contains blank: " + word);
Debería poder crear una clase de excepción personalizada que amplíe la clase Exception
, por ejemplo:
class WordContainsException extends Exception
{
// Parameterless Constructor
public WordContainsException() {}
// Constructor that accepts a message
public WordContainsException(String message)
{
super(message);
}
}
Uso:
try
{
if(word.contains(" "))
{
throw new WordContainsException();
}
}
catch(WordContainsException ex)
{
// Process message however you would like
}
Excelentes respuestas sobre la creación de clases de excepciones personalizadas. Si tiene la intención de volver a utilizar la excepción en cuestión, entonces seguiría sus respuestas / consejos. Sin embargo, si solo necesita una excepción rápida lanzada con un mensaje, entonces puede usar la clase de excepción base en el lugar
String word=reader.readLine();
if(word.contains(" "))
/*create custom exeception*/
throw new Exception("My one time exception with some message!");
}
Necesita crear una clase que se extienda desde Exception
. Debe tener un aspecto como este:
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);
}
}
Su pregunta no especifica si esta nueva excepción debe marcarse o desmarcarse.
Como puede ver here , los dos tipos son diferentes:
Las excepciones marcadas están destinadas a marcar una situación problemática que debe ser manejada por el desarrollador que llama a su método. Debería ser posible recuperarse de tal excepción. Un buen ejemplo de esto es una FileNotFoundException . Esas excepciones son subclases de Exception .
Las excepciones no verificadas están destinadas a representar un error en su código, una situación inesperada de la que es posible que no pueda recuperarse. Una NullPointerException es un ejemplo clásico. Esas excepciones son subclases de RuntimeException
La excepción controlada debe ser manejada por el método de llamada, ya sea atrapándola y actuando en consecuencia, o lanzándola al método de llamada. Las excepciones no revisadas no están destinadas a ser atrapadas, aunque es posible hacerlo.
Puede crear su propia excepción heredando java.lang.Exception
Here hay un ejemplo que puede ayudarlo a hacerlo.
Solo necesita crear una clase que amplíe Exception (para una excepción marcada) o cualquier subclase de Exception, o RuntimeException (para una excepción de tiempo de ejecución) o cualquier subclase de RuntimeException.
Luego, en tu código, solo usa
if (word.contains(" "))
throw new MyException("some message");
}
Lee el tutorial de Java. Esto es algo básico que todo desarrollador de Java debe saber: http://docs.oracle.com/javase/tutorial/essential/exceptions/
Tienes que definir tu excepción en otro lugar como una nueva clase
public class YourCustomException extends Exception{
//Required inherited methods here
}
Entonces puedes lanzar y atrapar YourCustomException tanto como quieras.
Una excepción es una clase como cualquier otra clase, excepto que se extiende desde Exception
. Entonces, si creas tu propia clase
public class MyCustomException extends Exception
puedes lanzar tal instancia con
throw new MyCustomException( ... );
//using whatever constructor params you decide to use
Y this podría ser una lectura interesante