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中打印出报错的位置和报错位置顺序路径


相关文章
|
JavaScript 前端开发 UED
JS:如何获取浏览器窗口尺寸?
JS:如何获取浏览器窗口尺寸?
503 1
|
4月前
|
JSON API 开发者
京东商品 API 接口,开发者详解与使用指南
京东开放平台提供商品API,包括获取商品详情、搜索商品、查询分类等功能。开发者可通过API实现商品数据获取与分析,适用于电商选品、价格监控、比价应用等场景。本文详解API调用流程、签名生成方式及Python代码示例,助力高效接入京东商品数据。
|
10月前
|
CDN
阿里云CDN收费标准,不同计费模式价格表(基础服务费和增值服务费用整理)
阿里云CDN的计费包括基础费用和增值费用。基础费用有三种计费方式:按流量、带宽峰值和月结95带宽峰值,默认按流量计费。增值服务如HTTPS、QUIC、WAF和实时日志等,使用才收费。详细价格和规则请参考阿里云官网。
1222 118
|
8月前
|
JSON 前端开发 应用服务中间件
跨域请求(CORS)如何解决?
CORS 全称为(Cross-Origin Resource Sharing:跨站资源共享),跨域请求是由于浏览器的同源策略(Same-Origin Policy)引起的,那么 CORS 的产生和浏览器的同源策略有关系,我们先了解什么是同源策略。
|
8月前
|
人工智能 自然语言处理 前端开发
用户说 | 零基础用通义灵码 AI 程序员开发个人笔记网站
通义灵码是一款基于通义大模型的智能编码辅助工具,支持自然语言生成代码、单元测试生成、代码注释生成等功能,兼容多种主流IDE和编程语言。对于零基础用户,只需通过自然语言描述需求,通义灵码即可自动生成代码,帮助快速开发个人笔记网站,极大简化开发流程,提升效率。
|
9月前
|
前端开发
Css实现文本超出长度隐藏并用三个点结尾
Css实现文本超出长度隐藏并用三个点结尾
229 17
|
9月前
|
人工智能 自然语言处理 IDE
通义灵码使用体验
通义灵码2.0是阿里云推出的AI编码助手升级版,安装简便且兼容主流IDE。其行级和函数级实时续写功能准确,大幅减少编码时间。特色自然语言生成代码、单元测试及注释生成功能实用,提升代码质量和维护性。智能问答和异常排查功能出色,显著提高编程效率与代码稳定性,值得推荐。
397 0
|
11月前
|
人工智能 算法 机器人
EMMA-X:新加坡科技设计大学推出具身多模态动作模型,使夹爪机器人具备空间推理和任务规划能力
EMMA-X是由新加坡科技设计大学推出的具身多模态动作模型,具备70亿参数,通过在链式思维推理数据上微调OpenVLA创建。该模型结合层次化的具身数据集,增强空间推理和任务规划能力。
406 3
EMMA-X:新加坡科技设计大学推出具身多模态动作模型,使夹爪机器人具备空间推理和任务规划能力
成功解决: Client network socket disconnected before secure TLS connection was established
这篇文章记录了在使用Avue时遇到的"Client network socket disconnected before secure TLS connection was established"错误的解决方法,即通过修改为国内镜像(如淘宝npm镜像)来解决安装问题,并提供了具体的命令示例以及安装成功后的截图。
成功解决: Client network socket disconnected before secure TLS connection was established
Inno Setup磁盘跨越必须启用,因为程序大于21000000000
Inno Setup磁盘跨越必须启用,因为程序大于21000000000