后端开发 \ Java \ throws和throw assert

throws和throw assert

总点击253
简介:throws throws:用在方法上,明确表示该方法会产生异常,但是方法内部不做处理,将异常抛给调用处。调用处必须进行异常处理。异常后面的语句不再执行。

throws


throws :用在方法上,明确表示该方法会产生异常,但是方法内部不做处理,将异常抛给调用处。调用处必须进行异常处理。异常后面的语句不再执行。

public class Throw1

{

public static void main(String[] args)

{

//主方法中调用用throws声明的方法,必须进行异常处理

try

{

calu(10,0);

}

catch (Exception e) //处理异常

{

e.printStackTrace();

}

System.out.println("********"); //会打印

}

public static int calu(int a,int b) throws Exception //将异常抛给调用处

{

int result= a/b;

System.out.println("#####"); //产生异常后,异常后面的语句不再执行

return result;

}

}

主方法也可以throws,是让JVM处理异常,然后主方法异常后面的语句不再执行

public class Throw1

{

public static void main(String[] args) throws Exception //将异常抛给JVM

{

calu(10,0);

System.out.println("********"); //不会打印

}

public static int calu(int a,int b) throws Exception //将异常抛给调用处

{

int result= a/b;

System.out.println("#####"); //产生异常后,异常后面的语句不再执行

return result;

}

}

throws和throw assert

数值转换异常:


throws和throw assert


throw


throw:用在方法中。由用户产生异常类对象,而非JVM产生,一般与自定义异常搭配使用。


下面代码自定义异常:


比如在微信红包中,一次最多是200元,超过200会出已异常:

/////throw

class MyException extends Exception

{

public MyException(String str)

{

super(str);

}

}

public class Throw1

{

public static void main(String[] args) throws Exception //将异常抛给JVM

{

try

{

int num=300;

if(num>200)

throw new MyException("微信红包至多200元");

}

catch (MyException e)

{

e.printStackTrace();

}

}

}

throws和throw assert


面试题:请解释throw和throws的区别


1. throw用于方法内部,主要表示手工异常抛出。


2. throws主要在方法声明上使用,明确告诉用户本方法可能产生的异常,同时该方法可能不处理此异常。

现在要求编写一个方法进行除法操作,但是对于此方法有如下要求:

在进行除法计算操作之前打印一行语句"****".

如果在除法计算过程中出现错误,则应该将异常返回给调用处。

不管最终是否有异常产生,都要求打印一行计算结果信息。


在方法内抛异常,用在产生异常处处理异常将异常抛出:

public class Throw1

{

public static void main(String[] args)

{

try

{

System.out.println(cual(10,0));

}

catch (Exception e)

{

e.printStackTrace();

}

}

public static int cual(int a,int b)

{

int result=0;

System.out.println("******");

try {

result=a/b;

}catch (Exception e)

{

throw e;

}finally {

System.out.println(result);

}

return result;

}

}

直接在方法上throws

public static int cual(int a,int b) throws Exception

{

int result=0;

System.out.println("******");

try {

result=a/b;

}finally {

System.out.println(result);

}

return result;

}

assert


语法:


assert 布尔表达式:“返回false执行的代码块”


当断言返回false时会抛出断言异常。异常后面语句不会执行。


java 断言开启参数(JVM参数)为 -ea,默认 断言关闭


[run]–>[Edit Configurations]—>[VM options] —ea。

public class Throw1

{

public static void main(String[] args)

{

int num=10;

assert num==55 :"num应该为55";

System.out.println(num);

}

}

throws和throw assert

意见反馈 常见问题 官方微信 返回顶部