我怎样可以创建一个与预定义异常类型不同的新异常
?
public class InvalidBankFeeAmountException extends Exception{
public InvalidBankFeeAmountException(String message){
super(message);
}
}
它将显示第一行编写的InvalidBankFeeAmountException警告。
我怎样可以创建一个与预定义异常类型不同的新异常
?
public class InvalidBankFeeAmountException extends Exception{
public InvalidBankFeeAmountException(String message){
super(message);
}
}
它将显示第一行编写的InvalidBankFeeAmountException警告。
class
,并使其 extend Exception
就可以了。Exception
,则需要extend RuntimeException
。
注意:被检查的 Exception
是指需要您在方法声明上添加 'throws
' 子句或者在 try
/catch
块中处理它们(如 IOException
)。未经检查的 Exceptions
可以像已检查的 Exceptions
一样被抛出,但您不需要以任何方式显式地处理它们(如 IndexOutOfBoundsException
)。public class MyNewException extends RuntimeException {
public MyNewException(){
super();
}
public MyNewException(String message){
super(message);
}
}
RuntimeException
并不是一种不好的做法。如果代码中没有到处都是检查异常,这确实会使你的代码更易于使用。 - jjnguy只需扩展以下之一
Exception
,如果您希望您的异常被检查(即:在 throws 子句中需要)RuntimeException
,如果您希望您的异常不被检查。请查看:
http://www.onjava.com/pub/a/onjava/2003/11/19/exceptions.html?page=1
第2页上给出了一个示例:
public class DuplicateUsernameException
extends Exception {
public DuplicateUsernameException
(String username){....}
public String requestedUsername(){...}
public String[] availableNames(){...}
}
同时提供了一套指南,说明何时以及为什么需要创建自己的异常。
import java.util.Scanner;
class NotProperNameException extends Exception {
NotProperNameException(String msg){
super(msg);
}
}
public class CustomCheckedException{
private String name;
private int age;
public static boolean containsAlphabet(String name) {
for (int i = 0; i < name.length(); i++) {
char ch = name.charAt(i);
if (!(ch >= 'a' && ch <= 'z')) {
return false;
}
}
return true;
}
public CustomCheckedException(String name, int age){
if(!containsAlphabet(name)&&name!=null) {
String msg = "Improper name (Should contain only characters between a to z (all small))";
NotProperNameException exName = new NotProperNameException(msg);
throw exName;
}
this.name = name;
this.age = age;
}
public void display(){
System.out.println("Name of the Student: "+this.name );
System.out.println("Age of the Student: "+this.age );
}
public static void main(String args[]) {
Scanner sc= new Scanner(System.in);
System.out.println("Enter the name of the person: ");
String name = sc.next();
System.out.println("Enter the age of the person: ");
int age = sc.nextInt();
CustomCheckedException obj = new CustomCheckedException(name, age);
obj.display();
}
}