java种字符转字符串的四种方式:
package demo1;
public class Ch1 {
public static void main(String[] args) {
char c='a';
//第一种
String s1=Character.toString(c);
//第二种
String s2=""+c;
System.out.println(s2);
//第三种
String s3=new String(new char[]{c});
//第四种
String s4=String.valueOf(c);
}
}
异常就是在程序执行过程中,出现了非正常情况,严重会导致jvm的非正常停止
在java面向对象编程中,把异常视为一个对象,可以把异常定义成一个类
产生异常就是要创建一个异常对象并抛出一个异常对象
面试题:
1,throw和throws的区别
throws:
用在方法声明之后,跟的是异常类名,可以跟多个
表示声明异常,由该方法的调用者来处理
表示出现该异常可能性,并不一定会发生异常
throw:
用在方法体内,跟的是异常对象名
表示抛出异常,由方法体内的语句来处理
执行throw一定抛出了某种异常
2,编译期异常和运行时异常的区别
编译期异常(checked):
在编译时期,就会检查,如果没有处理异常,则编译失败
都是Exception类及其子类
Exception的子类例如:
1,ClassNotFoundException
2,InterruptedException
3,IUException
4,NoSunchFieldException
5,ParseException
运行期异常(runtime)
在运行期间,检查异常,在编译时期不会报错
都是RintimeException类及其子类
例如:
1,NullPointerException
2,IndexOutOfBoundException
3,IllegalArgumentException
4,ClassCastException
5.SystemException
自定义异常类是根据自己的业务异常情况来定义类
1. 自定义一个编译期异常,自定义类,继承于Exception
2. 自定义一个运行期异常类,并继承于 RuntimeException
* 异常的继承体系结构 * 最顶级的Throwable:错误,异常 * Error:正常情况下,不太可能出现的。绝大多数Error都会导致程序处于 * 非正常的状态下,很难恢复。外力的作用下,不考虑。 * Error是Throwable的子类。它是在Java程序处理范围之外的。 * Exception:Java语言中,将程序执行中发生的不正常的情况称之为异常。 * 编译期异常:写代码的时候,抛异常。如果编译器不解决,会编译不通过,一直报红。 * 运行期异常:RuntimeException,运行时会抛异常,平时没事*** * * 自定义异常: * Java中异常机制,但是结合实际业务。 * 怎么自定义异常? * 1.所有异常必须是Throwable的子类(大材小用,没必要) * 2.如果要定义一个编译期异常,需要继承Exception类。 * 3.如果要定义一个运行期异常,需要继承RuntimeException类。
* 异常链 * 一个异常被抛出去之后会继续被调用这个方法的方法捕获或抛出,异常会扩散。
class A{
public void a() {
throw new ServiceException(201,"业务异常...");
}
}
class B {
public void b() {
A aa = new A();
aa.a();
// try {
// aa.a();
// } catch (Exception e) {
// e.printStackTrace();
// }
System.out.println("b方法的语句");
}
}
class C {
public void c(){
B b = new B();
b.b();
System.out.println("c方法的语句..");
}
}
public class Ch05 {
public static void main(String[] args) {
C c = new C();
c.c();
System.out.println("Ch05的语句");
}
}
* catch可以写多个,有顺序问题。 * 先写小的,再写大的
public static void main(String[] args) {
int num1 = 10;
int num2 = 0;
try {
System.out.println(num1 / num2);
// 开发角度来说,应该写指定的。
} catch (ArithmeticException e) {
// e.printStackTrace();
System.out.println("除数不能为0");
} catch (Exception e){
System.out.println("未知错误");
}
}
异常好处:
将异常处理代码与普通代码区分开
能将异常信息传播到调用堆栈中
能对异常类型进行区分和分组



