【初学者求解】判断给定字符串的内容是否全部都是英文字母,若其中包含其它字符,则抛出一个错误
【菜鸟求解】判断给定字符串的内容是否全部都是英文字母,若其中包含其它字符,则抛出一个异常
按照正常编译 应该是输出 字符串 Hell!MR!中含有非法字符!
但是当中出现错误
MyException
at Example.check(Example.java:18)
at Example.main(Example.java:26)
请问是什么原因
------解决方案--------------------
你在异常的构造函数中没有调用父类的构造函数
加上super(content)
------解决方案--------------------
你直接throw new RuntimeException("字符串" + str +"中含有非法字符!");就行了,没必要声明抛出以及定义异常类。
你这个报错应该是你的异常类没有调用父类的构造方法:
------解决方案--------------------
是的
public class MyException extends Exception { //继承Exception类
private String content;
public MyException(String content){ //构造方法
this.content=content;
}
public String getContent() { //获取描述信息
return this.content;
}
}
public class Example {
public static void check(String str) throws MyException{ //指明要抛出的异常
char[] Array = str.toCharArray();//将字符串转换为字符数组
//检查字符数组中的每个元素
//如果当前元素是英文字母以外的字符,则抛出MyException异常类对象
for(int i = 0;i < Array.length;i++){ //检查字符数组中的每个元素
if((Array[i] <= 64 && Array[i] >= 0) || (Array[i] >= 91 && Array[i] <= 96) || ( Array[i] >= 123))
throw new MyException("字符串" + str +"中含有非法字符!");//如果当前元素是英文字母以外的字符,则抛出MyException异常类对象
}
}
public static void main(String[] args) {
String str1="HellWorld";
String str2="Hell!MR!";
try{
check(str1); //调用check()方法
check(str2); //执行该行代码时,抛出异常
}catch(MyException e){ //捕获MyException异常
e.printStackTrace(); //输出异常描述信息
}
}
}
按照正常编译 应该是输出 字符串 Hell!MR!中含有非法字符!
但是当中出现错误
MyException
at Example.check(Example.java:18)
at Example.main(Example.java:26)
请问是什么原因
------解决方案--------------------
你在异常的构造函数中没有调用父类的构造函数
加上super(content)
------解决方案--------------------
你直接throw new RuntimeException("字符串" + str +"中含有非法字符!");就行了,没必要声明抛出以及定义异常类。
你这个报错应该是你的异常类没有调用父类的构造方法:
public MyException(){
super();
}
public MyException(String msg){
super(msg);
}
------解决方案--------------------
是的
System.out.println(e);