首页 >

新手问题:异常处理的问题

后端开发|php教程新手问题:异常处理的问题
php,python,java,c++,异常处理
后端开发-php教程
想问一个普遍通用的问题,请问异常处理时
在什么情况下,应该抛出让外部调用者去处理异常?
在什么情况下,应该由自己处理异常?
以python为列:
···python
小刀娱乐网源码带采集,vscode最新功能,串口绑定ubuntu,tomcat 传中文参数,溧水爬虫,php scp,seo公司系统推广引流,服务机构网站源码,js页面模板下载地址lzw
try:    异常语句  except Exception as e:    print e  #自己处理异常    raise    #让调用者处理异常
vb源码出售,vscode找不到php路径,ubuntu 拨号上网,tomcat和阿里云,sqlite软件架构,网页设计 邮箱,dede获取数据库连接失败,阿里云服务器说明书,discuz 新浪微博登录插件,ruoyi前端框架,沈阳爬虫馆,php前途,英文seo接单,进阶宝典springboot,红酒企业网站模板免费下载,分析网页模板,二次元 模板,网站前台后台,layer 页面层 关闭,会员管理系统php源码,盗版微擎商业版小程序生成失败lzw
回复内容:
晓风彩票网站源码,vscode改背景颜色,删除ubuntu xorg,tomcat端口无法使用,尿液爬虫,php支付宝接口开发文档,虹口seo优化有哪些,thinkphp写的旅游网站,wordpress 仿微博模板lzw
想问一个普遍通用的问题,请问异常处理时
在什么情况下,应该抛出让外部调用者去处理异常?
在什么情况下,应该由自己处理异常?
以python为列:
···python

try:    异常语句  except Exception as e:    print e  #自己处理异常    raise    #让调用者处理异常

对于你问的问题,实际上是一个异常处理策略的问题。至于以何种语言为例,道理都是一致的。说说我的看法:

首先需要对异常分类。当前抛出异常是属于系统异常还是业务异常,如果是系统异常,不要抛出,如果是业务异常,则需要抛出。这里的难点在于分类,得视具体情形而定,例如:同样的一个资源访问IO异常IOException,对于有些一些持久化数据的调用方法更多就是系统异常,因为默认的话,不应该存现这样持久化存储对象不存在;而对于一个打开文件目录的调用方法就更偏向于是提供的文件目录有误,这样应包装成业务异常;
其次需要划分异常范围。在一个模块内部的异常,往往不要抛给模块的调用者,因为对于内部的异常,调用者也无法知道如何处理。另外,系统对外暴露的接口,最好通过错误码返回,不要抛出异常,这会导致外部系统理解歧义,因为外部系统无法知道调用异常到底是表示业务请求失败,还是系统出错?反之,对于调用外部系统时捕获的异常,往往上层的应用也不知道如何处理,所以一般的话,也尽量不要抛给上层调用者;
此外,在涉及操作系统调用的方法中,对于方法抛出的类似中断异常等系统异常,最好选择抛出给调用者,以防止私吞异常导致屏蔽了商城调用者对于中断异常的特殊处理逻辑。

这个不是看情况吗。如果 Exception 出现的概率比较大,而且是可以预测的(比如文件无法打开,输入不符合要求之类的),当然就就地解决了,这类异常往往不能算真的“异常”,也是系统功能的一部分。如果是不可以预测的其他异常就 raise 好了。

这个取决于你需要在哪一级处理这个异常

如果你可以在最底层就处理掉异常,那就可以直接处理掉
如果上层的代码需要获取这个异常进行不同的处理,那就抛出去


新手问题:异常处理的问题
  • python3 与python2 异常处理的区别与联系
  • python3 与python2 异常处理的区别与联系 | python3 与python2 异常处理的区别与联系 ...

    新手问题:异常处理的问题
  • 分享一个php 的异常处理程序
  • 分享一个php 的异常处理程序 | 分享一个php 的异常处理程序 ...

    新手问题:异常处理的问题
  • python中的错误处理
  • python中的错误处理 | python中的错误处理 ...