Throwable
子类:Error
Exception
RuntimeException (运行时异常,自己犯的错误)
jvm处理异常机制
jvm有一个异常的处理机制,就是将异常进行处理,然后将异常的名字,信息出现的位置打印在控制台上,同时程序停止。
异常处理的两种方式
try … catch…
throws
返回值的问题
/**
* @author kiosk
*/
public class Test2 {
public static void main(String[] args) {
System.out.println(method1());
}
public static int method1(){
int a = 10;
try {
a = 20;
System.out.println("除法的值为:" + a / 0);
//如果出现异常,会先建立返回的路径,然后执行finally的内容
//之后将真正的返回
return a;
}catch (Exception e){
a = 30;
return a;
}finally {
//千万不要再finally中写return语句,它会覆盖之前try catch中的语句
a = 30;
}
}
}
自定义异常
自定义的异常:
/**
* 自定义的异常
* @author kiosk
*/
public class AgeOutOfBoundsException extends Exception{
public AgeOutOfBoundsException() {
}
public AgeOutOfBoundsException(String message) {
super(message);
}
}
使用自定义的异常
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) throws AgeOutOfBoundsException{
if(age > 0 && age < 120 ){
this.age = age;
}else {
throw new AgeOutOfBoundsException("年龄不符合规范");
}
}
}
测试
/**
* @author kiosk
*/
public class Test {
public static void main(String[] args) throws AgeOutOfBoundsException{
Student student = new Student();
student.setName("张三");
student.setAge(200);
System.out.println(student.getName() + " :" + student.getAge());
}
}
键盘输入的字符转换为二进制
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;
/**
* @author kiosk
*/
public class Test4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数");
while (true) {
String line = scanner.nextLine();
try {
int num = Integer.parseInt(line);
System.out.println("转换为二进制为:" + Integer.toBinaryString(num));
break;
}catch (Exception e){
try {
new BigInteger(line);
System.out.println("您输入的字符过大,请您重新输入");
}catch (Exception e1){
try {
new BigDecimal(line);
System.out.println("您输入的字符为小数,请您重新输入");
}catch (Exception e2){
System.out.println("您输入的为非法字符,请您重新输入");
}
}
}
}
}
}