鱼C论坛

 找回密码
 立即注册
查看: 1814|回复: 7

[已解决]关于Python的异常处理应用范围

[复制链接]
发表于 2016-7-17 15:25:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
看了教程和一些书,也都看过关于异常处理的地方

但是,对于异常处理还是没有一个整体概念上的理解,因为作为新手的我来说,程序如果有不对的地方,系统肯定能自动报错

那为什么我们还要人为地去设置一些异常捕获呢?

还是说,现在做的练习题代码量是非常小的?遇到真实项目的时候,异常捕获会非常有用???

最佳答案
2016-7-17 20:50:48
对于开发者而言,系统报错能够知道错误的原因,对终端用户而言,是不能程序异常终止的。
下面是一个简单的例子:
  1. s = input('请输入一个非0整数:')
  2. n = 1 / int(s)
  3. print(n)
复制代码

如果用户输入的不是数字,或是数字0,程序都会报错
这样修改一下,就可以在输入错误时提醒用户重新输入。
  1. while True:
  2.     s = input('请输入一个非0整数:')
  3.     try:
  4.         n = 1 / int(s)
  5.         print(n)
  6.         break
  7.     except ValueError:
  8.         print('您输入的不是数字,', end = '')
  9.     except ZeroDivisionError:
  10.         print('您输入的是0,', end = '')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-17 15:40:25 | 显示全部楼层
比如请求HTTP,
你能知道服务器炸了没炸么。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-17 15:44:02 | 显示全部楼层
wei_Y 发表于 2016-7-17 15:40
比如请求HTTP,
你能知道服务器炸了没炸么。

看来是没接触到后面的关系.........
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-17 16:01:11 | 显示全部楼层
NoDinner 发表于 2016-7-17 15:44
看来是没接触到后面的关系.........

只要不是可以确定的事都可以用异常处理。
比如你不确定别人的电脑上安没安这个包,就可用异常。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-17 16:05:51 | 显示全部楼层
wei_Y 发表于 2016-7-17 16:01
只要不是可以确定的事都可以用异常处理。
比如你不确定别人的电脑上安没安这个包,就可用异常。

恩啊,我感觉这个异常捕获有点像放个陷阱。。。然后看是否有猎物被捕获的意思。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-17 17:49:41 | 显示全部楼层
你不能总等着计算机运行程序崩溃了报异常,要学会自己在程序中加入捕获和处理异常的代码,使其在任何情况下都能正常结束。
比如你做了一个手机软件,用着用着崩溃了,报了一堆红字,用户肯定会(╯‵□′)╯︵┻━┻
你做的应该是预知到什么情况下会出问题,弹出个提示告诉用户怎么做,或者发送错误报告,等等一系列的处理方式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-17 20:50:48 | 显示全部楼层    本楼为最佳答案   
对于开发者而言,系统报错能够知道错误的原因,对终端用户而言,是不能程序异常终止的。
下面是一个简单的例子:
  1. s = input('请输入一个非0整数:')
  2. n = 1 / int(s)
  3. print(n)
复制代码

如果用户输入的不是数字,或是数字0,程序都会报错
这样修改一下,就可以在输入错误时提醒用户重新输入。
  1. while True:
  2.     s = input('请输入一个非0整数:')
  3.     try:
  4.         n = 1 / int(s)
  5.         print(n)
  6.         break
  7.     except ValueError:
  8.         print('您输入的不是数字,', end = '')
  9.     except ZeroDivisionError:
  10.         print('您输入的是0,', end = '')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-7-17 22:46:02 | 显示全部楼层
冬雪雪冬 发表于 2016-7-17 20:50
对于开发者而言,系统报错能够知道错误的原因,对终端用户而言,是不能程序异常终止的。
下面是一个简单的 ...

嗯嗯,谢谢版主耐心解答,看来异常捕获,可以更加友好地服务于使用端的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 15:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表