//手机终端 请上下左右 滑动屏幕 观看更全!
//package Main;
//异常的捕获与处理
/**
* @SaySomething(我觉得我应该说点什么的):
* :Java异常指的是导致程序中断执行的一种指令流,在程序执行正常的过程中会发现所有的程序都会按照既定的结构从头到尾执行,
* 但是在出现错误之后,整个程序将不会按照既定的方式进行执行,而是中断了执行,那么为了保证程序出现;额非致命性的错误后
* 依然可以正常继续向下执行完成,此时就需要有一个完善的异常处理机制,以保证程序顺利执行。
* :
* -
* -
* @Attention(注意):
* 1、在Java之中如果要k进行异常处理需要使用:try、catch、finally 这几个关键字来完成。
* 2、异常关键字格式之中使用组合为:try...catch、try...catch...finally、try...finally 。
* 3、对于异常的处理格式也可以在最后加上一个finally程序块,表示异常的处理出口,不管是否出现异常都执行
* 4、在进行异常处理的时候输出的直接是一个异常类对象,那么对于此对象如果直接打印则调用的是(toString())
* 所得到的异常信息并不完整,那么如果想要捕获非常完整的异常信息,则可以调用异常类中提供的printStackTrace()方法
* 5、所有的异常类皆为Exception子类,那么按照对象的应用原则,可以自动向父类转型,
* 这样一来实际上所有的异常皆可用Exception来处理,当不明确可能产生的异常的时候用这种处理方式是最方便的,
* 但是他也会产生一个问题就是他描述的错误信息不明确范围太大(视情况使用)。
* 6、在进行多个异常同时处理的时候要把捕获范围大的异常放在范围小的异常后面。
* 7、如需明确标注异常告诉使用者这个方法可能会产生什么样的异常那么就得在此方法上使用 throws 标注。
* 8、如果主方法继续向上抛异常那么久表示异常讲交由JVM处理。
* 9、throws和throw的区别:1、throws是在方法上使用的,表示此方法将可能产生的异常明确告诉调用处会产生何种异常,由调用处处理。
* 2、是在代码块中专用,主要是进行手工异常对象的抛出。
* 10、RuntimeException 和 Exception 的区别:RuntimeException 是 Exception的子类。
* RuntimeException标注的异常可以不就行强制性处理,而Exception则必须强制性处理,
* RuntimeException常见异常有 NumberException,ClassCasException、NullPointerExca
* 11、自定义异常类一般不是继承Exception就是继承RuntimeException 。
* 12、java 中断言没有被设置为程序必须执行的步骤,需要特点环境下才可以,
* 断言不会影响最终正确结果只是一个建议和提示或参考而已。
* 13、要启用断言则可以在编译后执行的时候加上 -ea 参数
* @time(时间):-2019/05/04
* @role(谁):-杨木发
*
* @modify(修改)-:
* -@time:
* -@role:
*/
/*
public class ExceptionDemo {
public static void main(String[] args) {
System.out.println("正常开始!");
try{//捕获异常
System.out.println(10/0);
}catch(ArithmeticException AE){//处理异常
//System.out.println("哦哟哦,算术异常处理"+AE);
AE.printStackTrace();//使用此方法会输出更为详细的异常信息
}finally{
System.out.println("不管异常与否我都执行!");
}
System.out.println("正常结束!");
}
}
*/
/*
class ExceptionDemo1{
public static void main(String[] args) {
System.out.println("正常开始!");
try{//可能出现多个异常
int x = Integer.parseInt(args[0]);
int y = Integer.parseInt(args[1]);
System.out.println("数雪计算:"+(x/y));
//多个异常捕获
}catch(ArithmeticException AE1){//处理异常
AE1.printStackTrace();//使用此方法会输出更为详细的异常信息
System.out.println("www");
}catch(NumberFormatException NE1){
NE1.printStackTrace();
System.out.println("www");
}catch(Exception E1){//在进行多个异常同时处理的时候要把捕获范围大的异常放在范围小的异常后面。
E1.printStackTrace();
System.out.println("www");
}finally{
System.out.println("不管异常与否我都执行!");
}
System.out.println("正常结束!");
}
}
*/
/*
//throws(异常类的标注)
class ExceptionDemo2{
public static int div(int x,int y)throws Exception{
return x/y ;
}
public static void main(String[] args)throws Exception {
System.out.println("正常开始!");
try{
System.out.println(ExceptionDemo2.div(10,0));
}catch(Exception E2){
E2.printStackTrace();
}
System.out.println("正常结束!");
}
}
*/
/*
//throw(手工产生一个异常类实例化对象并进行抛出)
class ExceptionDemo3{
public static void main(String[] args){
try{
//异常对象不再是由系统生成的,而是由手工定义的
throw new Exception("自己抛这玩儿的异常") ;
}catch(Exception E3){
E3.printStackTrace() ;
}
}
}
*/
/*
//实现自定义异常
class CustomException{
public static void main(String[] args)throws Exception {
CustomException2.eat(11);
}
}
//自定义异常
class CustomException1 extends Exception{
public CustomException1(String args) {
super(args);
}
}
class CustomException2{
public static void eat(int num)throws CustomException1{
if(num>10){
throw new CustomException1("吃十碗饭,胀死你个龟儿子!");
}else{
System.out.println("吃吧孩子,你不会胖的...");
}
}
}
*/
//assert断言
class AssertDemo{
public static void main(String[] args) throws Exception{
int x=100 ;
//中间X变量结果一系列的操作步骤(值在变化)
assert x==10:"X是的值是10" ;
System.out.println(x);//输出值不会因为断言而受到影响,如果 启用 -ea 参数则抛异常
}
}
/*-------------------反爬声明o(▽)咻咻咻--------------------
作者:**杨木发** 版权声明: 本文为博主倾情原创文章,整篇转载请附上源文链接!
如果觉得本文对你有所收获,你的请评论点赞 与
合理优质的转发也将是鼓励支持我继续创作的动力,
更多精彩可百度搜索 杨木发 或:
个人网站:杨木发的自留地 - 此地无银三百两 ,
GitHub:https://github.com/yangmufa ,
坚持创作 善于总结 开源共享 高质进步。
-------------------反爬声明o(▽)咻咻咻--------------------*/