throw后报错,找不到报错处。throw、throws 、try/catch 作用区别,自定义Exception异常,printStackTrace()方法的

简介: throw后报错,找不到报错处。throw、throws 、try/catch 作用区别,自定义Exception异常,printStackTrace()方法的

throw后报错,找不到报错处



关键字:throw  是一种控制程序流程的特殊方法而已。没有相应的catch的话,可以中止当前的方法继续执行。


关键字:throws  声明方法时候,如果不声明throws的话,那么一般的Exception都要在这个方法中终结,也就是说一定要有相应的catch处理,否则编译时会产生错误。如果方法声明了throws的话,可以交给上一级方法去处理。以此类推。但是有些Exception可以不加捕捉,编译也会通过。继承Exception类,可以自己定义Exception,对于特定的状态,


所以你使用了throws之后是没有catch的,实在上层的调用中有catch。  这样有时候不直观,报错还得去上层打bug断点。


一般还是try、catch  ,能直接捕捉到。便于使用。


关键字:try、catch  用个形象的比喻,如果说throws相当于职业介绍中介的话,那try和catch就是一对倒霉的打工仔。很有意思,throws只是告诉编译器--方法可能产生的异常问题,然后把问题处理抛给try和catch。


他们一个负责发现异常关系,一个负责异常捕获。


自定义Exception异常



package com.example.ceshi;
/**
 * @ProjectName: ceshi
 * @Package: com.example.ceshi
 * @ClassName: ServiceException
 * @Description: java类作用描述
 * @Author: 作者名
 * @CreateDate: 2020/7/23 0023 下午 2:33
 * @UpdateUser: 更新者:
 * @UpdateDate: 2020/7/23 0023 下午 2:33
 */
public class ServiceException extends Exception {
    /**
     *
     */
    private static final long serialVersionUID = 5717888100550404100L;
    public ServiceException(String str){
        super(str);
    }
    public ServiceException() {
        super();
    }
    public ServiceException(String str, Throwable t) {
        super(str, t);
    }
    public ServiceException(Throwable t) {
        super(t);
    }
}

捕获Text();设置错误信息,注解有解释


try {
            Test();  //捕获异常
        } catch ( ServiceException e ) {
            e.printStackTrace();  
// 获取错误信息,以dialog形式进行弹窗;
            waitCloseAlert("执行线程异常,原因:"+e.getMessage()); 
        }
    }
    public static void Test()throws ServiceException
    {
        throw new ServiceException("怎么说");   //设定错误信息
    }
    /**
     * 关闭等待警告提示
     * */
    public void waitCloseAlert(final String message) {
        MainActivity.this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if (processDialog != null && processDialog.isShowing()) {
                    processDialog.dismiss();
                }
                showAlertDialog(message,null,R.drawable.ic_launcher_background,null);
            }
        });
    }
    public void showAlertDialog(String title,String message,Integer icon,final View focusView){
        AlertDialog.Builder builder=new AlertDialog.Builder(this);
        if(title!=null){
            builder.setTitle(title);
        }
        if(message!=null){
            builder.setMessage(message);
        }
        if(icon!=null){
            builder.setIcon(icon);
        }
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                if(focusView!=null){
                    focusView.requestFocus();
                }
            }
        });
        AlertDialog dialog = builder.create();
        dialog.show();
    }

printStackTrace()方法的作用



直接上两张图片:

使用:printStackTrace


5f95140771ee4de8892d0a886bcc9805_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.jpg

不使用:printStackTrace


75f0b314d23d4525a1b0f063857cf8a6_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.jpg

解释:根据名字就知道,使用的话,才能在log中打印出报错的位置和报错位置顺序路径


目录
相关文章
每日一道面试题之try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
每日一道面试题之try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
163 0
|
3月前
|
网络协议 Java 数据库连接
13 Java异常(异常过程解析、throw、throws、try-catch关键字)
13 Java异常(异常过程解析、throw、throws、try-catch关键字)
75 2
|
Java 程序员 API
异常(中)创建自定义异常,throw,throws关键字抛出异常
异常(中)创建自定义异常,throw,throws关键字抛出异常
109 0
|
Java
Exception 和 Error 有什么区别?
Java 平台对不同的异常进行了分类,具体被分为了 Exception 和 Error,他们都是继承了 Throwable 类。
105 0
Exception 和 Error 有什么区别?
try...catch中,catch加了return,后面的代码是不会执行的
try...catch中,catch加了return,后面的代码是不会执行的
105 0
Java 最常见的面试题:try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
Java 最常见的面试题:try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
|
JSON 安全 前端开发
替代try catch处理异常的优雅方式
替代try catch处理异常的优雅方式
|
安全 Java 程序员
Exception和Error的区别
Exception和Error的
205 0
|
安全
Error、Exception区别
Error、Exception区别
120 0