主题:一个关于自定义异常处理的小疑问,求教
题目:自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为“XYZ”,则抛出一个异常信息“This is a XYZ”,如果从命令行输入ABC,则没有抛出异常。(只有XYZ和ABC两种输入)。
代码:
[code]
class UserDefinedException extends Exception
{
public UserDefinedException(String str)
{
System.out.println("This is a "+str);
}
}
public class ThrowsDemo {
public static void thisthrow(String th) throws UserDefinedException
{
if(th.equals("XYZ"))
throw new UserDefinedException(th);
}
public static void main(String args[]) //throws ArrayIndexOutOfBoundsException
{
String str="";
try
{
//str=String.valueOf(args[0]);
str=args[0];
}
catch(ArrayIndexOutOfBoundsException e){
try
{
if(str.equals("XYZ"))
thisthrow(str);
else if (str.equals("ABC"))
System.exit(0);
}
catch(UserDefinedException i)
{
System.out.println(i);
}
}
}
}
[/code]
不知为何ArrayIndexOutOfBoundsException异常总是出现,所以加了catch处理语句,将判断输入字符串、抛出自定义异常的语句放在了内部。令我不解的是,编译、运行无错,但是结果不显示This is a XYZ,这个结果。是我的代码有为题吗?请指教!
代码:
[code]
class UserDefinedException extends Exception
{
public UserDefinedException(String str)
{
System.out.println("This is a "+str);
}
}
public class ThrowsDemo {
public static void thisthrow(String th) throws UserDefinedException
{
if(th.equals("XYZ"))
throw new UserDefinedException(th);
}
public static void main(String args[]) //throws ArrayIndexOutOfBoundsException
{
String str="";
try
{
//str=String.valueOf(args[0]);
str=args[0];
}
catch(ArrayIndexOutOfBoundsException e){
try
{
if(str.equals("XYZ"))
thisthrow(str);
else if (str.equals("ABC"))
System.exit(0);
}
catch(UserDefinedException i)
{
System.out.println(i);
}
}
}
}
[/code]
不知为何ArrayIndexOutOfBoundsException异常总是出现,所以加了catch处理语句,将判断输入字符串、抛出自定义异常的语句放在了内部。令我不解的是,编译、运行无错,但是结果不显示This is a XYZ,这个结果。是我的代码有为题吗?请指教!