Python3 捕捉异常

可以通过try/except语句来实现捕获异常,如下:

bpython version 0.15 on top of Python 3.5.1+ /usr/bin/python3
>>> x=3
>>> y=0
>>> x/y
Traceback (most recent call last):
  File "<input>", line 1, in <module>
    x/y
ZeroDivisionError: division by zero

捕获异常:

这里只输出提示信息:

#!/usr/bin/env python
# encoding: utf-8
"""
@author: kamil.liu @file: except.py
@time: 16-5-30 上午11:40
"""
x = 3
y = 0
try:
    print(x/y)
except ZeroDivisionError:
    print(‘The second number can`t be zero‘)

结果:

/usr/bin/python3.5 /home/kamil/PycharmProjects/untitled/test1/try/except.py
The second number can`t be zero

Process finished with exit code 0

不加参数,捕获异常:

如果捕获到异常,不处理,只传递异常,可以调用不带参数的raise,如下事例:

传递异常:

#!/usr/bin/env python
# encoding: utf-8

class MuffledCalculator:
    muffled = False
    def calc(self,expr):
        try:
            return eval(expr)
        except ZeroDivisionError:
            if self.muffled:
                print("Division by zero is illegal")
            else:raise
calculator = MuffledCalculator()
print(calculator.calc(‘9/3‘))
#calculator.muffled = True
print(calculator.calc(‘9/0‘))

"""
/usr/bin/python3.5 /home/kamil/PycharmProjects/untitled/test1/try/except.py
3.0
Traceback (most recent call last):
  File "/home/kamil/PycharmProjects/untitled/test1/try/except.py", line 16, in <module>
    print(calculator.calc(‘9/0‘))
  File "/home/kamil/PycharmProjects/untitled/test1/try/except.py", line 8, in calc
    return eval(expr)
  File "<string>", line 1, in <module>
ZeroDivisionError: division by zero

Process finished with exit code 1
"""

不传递异常

#!/usr/bin/env python
# encoding: utf-8

class MuffledCalculator:
    muffled = False
    def calc(self,expr):
        try:
            return eval(expr)
        except ZeroDivisionError:
            if self.muffled:
                print("Division by zero is illegal")
            else:raise
calculator = MuffledCalculator()
print(calculator.calc(‘9/3‘))
calculator.muffled = True
print(calculator.calc(‘9/0‘))

"""
/usr/bin/python3.5 /home/kamil/PycharmProjects/untitled/test1/try/except.py
3.0
Division by zero is illegal
None

Process finished with exit code 0
"""

除0行为发生,屏蔽被打开,calc会返回None。

时间: 2024-10-12 06:54:37

Python3 捕捉异常的相关文章

python 捕捉异常

Python中的捕捉异常 (try  except ) 语句: try: #把你要执行的代码放进来 ..... ..... except: #比如try上面的代码出现了异常,就会来到这里 #我们可以打印一句话 print ('error') --------------------------------------------------------------- 又或者说 try: #把你要执行的代码放进来 ..... ..... except typeError as reason #类型

21、捕捉异常和异常的使用原则

package com.exception.demo; public class Take { // 创建类 /** * 1.捕捉异常( 异常处理器大致分为 try-catch 语句快 和 finally 语句块 ) * 2.以下4种情况不会执行finall语句块 * 2.1.在finally语句块发生了异常 * 2.2.在前面的代码中使用了 System.exit() 退出程序 * 2.3.程序所在的线程死亡 * 2.4.关闭CPU * 3.异常的使用原则: * 1.在当前方法中使用 try

idhttp post 出现exception class EIdSocketError with message &#39;Socket Error # 10054的解决办法(捕捉异常,防止程序挂掉)

由于项目需要.需要向一个地址提交数据.提交的次数很频繁,但是程序经常raised exception class EIdSocketError with message 'Socket Error # 10054Connection reset by peer.' 造成程序异常,停止工作.    于是找到以下解决办法.Exception捕获不到该异常.需要用EIdException来捕获异常.    IDE环境: Delphi XE3 Version 17.0.4625.53395     IN

Java try-catch自定义捕捉异常

题目要求:输入数值,90-100输出“优”,80-90输出“良”,70-80输出“中”,60-70输出“及格”,0-60输出“不及格”,输入其他捕捉异常并提示相应信息. 代码如下: 1 import java.util.Scanner; 2 3 @SuppressWarnings("serial") 4 //自定义异常类 5 class TryException extends Exception 6 { 7 /** 8 * 9 */ 10 private static final l

springmvc mybatis 声明式事务管理回滚失效,(checked回滚)捕捉异常,传输错误信息

一.知识点及问题 后端框架: Spring .Spring mvc .mybatis 业务需求: client先从服务端获取用户大量信息到client,编辑完毕之后统一Post至服务端,对于数据的改动要么全成功,要么全失败,所以须要使用事务支持. 问题: 配置Spring声明式事务,运行中出现异常未回滚.从网上查询得到一開始是自己的配置出了问题,因为配置文件的载入顺序决定了容器的载入顺序导致Spring事务没有起作用. 详情例如以下: 因为採用的是SpringMVC. MyBatis,故统一採用

什么时候抛异常什么时候捕捉异常?

之前面试遇到这样一个问题,异常有两种处理方式,一种是直接捕捉try catch,一种是直接往外抛throws,那么这两种方式都是什么情况下使用呢 当时一下没反应过来,工作中大多数都是直接捕获,后面才了解到首先你要弄清楚这个功能的位置: 如果这个方法没有人调用,则一定要捕捉不然就抛到jvm来处理了(比如Controller层一般都是要对异常进行捕捉,该打日志的打,该抛前台的抛) 有其他调用者要使用你这个方法,如果这个异常信息是不需要让调用者知道的就直接捕获,比如时间转换用到SimpleDateFo

捕捉异常

import java.io.*; import text.MyException; public class Yichang { public static void main(String[] args) { //捕获异常 //抛出异常 throw 写在方法体里面 throws 写在方法名字的后面 表示将方法里的异常抛出,抛给它的调用者 try { int r = 3 / 1; System.out.println("结果 = " + r); Exception ex = new

c语言捕捉异常

闲暇之日阅读lua源码,发现原来C语言除goto之外的另一个处理异常的方法.既为setjump longjump两个函数,setjump相当于try,longjump相当于catch.与goto不同的是,longjump是全局的,比goto的作用范围更广.下面贴出简单用法: #include <stdlib.h> #include <setjmp.h> jmp_buf jumper; int fdf(int a, int b) { if (b == 0) { // can't di

Python3 中异常的处理

1.普通异常的使用: names = ['wt','gxb'] data = {} try: # names[3] # data['name'] open('b.txt') except IndexError as e: print('there is not exist this key',e) except Exception as e: print('I can`t find this error!!!') else: print('it`s ok!!') finally: print('