python learning diary - exception handling and network infrastructure

First, errors and exceptions

1. syntax error (pycharm will be reported red, could not pass the python interpreter)

如:print("hello world"

2. Logical errors

Such as: res = 1/0

li = [1,2,3] 
print (li [10])
age = input ( "Please enter the Age:") 
Age = int (Age)

traceback: abnormal tracking. IndexError: exception class. list index out of range: outlier

Common abnormal 
AttributeError not attempt to access an object tree, such foo.x, but no attribute foo X 
IOError input / output is abnormal; substantially not open file 
ImportError package or module can not be introduced; substantially name or path error problem 
IndentationError syntax errors (sub-class); the code is not properly aligned 
IndexError subscript index out of sequence boundaries, such as when only three elements of x, is trying to access x [. 5] 
a KeyError attempts to access the dictionary does not exist in the bond 
KeyboardInterrupt Ctrl + C is pressed under 
NameError use a variable has not been given an object 
SyntaxError Python code is illegal, the code does not compile (personally think it's a syntax error, wrong) 
TypeError incoming object type does not comply with the requirements of 
UnboundLocalError trying to access has not been a set of local variables, basically due to a global variable otherwise the same name, 
cause you think it is being accessed 
ValueError incoming caller does not expect a value, even if the value of the type is correct

Second, exception handling

1.what: python interpreter detects an error or exception is triggered programmer; capturing the abnormality may enter another processing logic to perform a particular branch has caused the program to crash.

2.why: python interpreter executes the program detects an error, trigger an exception, if the process has not been captured, it will terminate the program. In order to enhance the robustness and fault-tolerance program, we need to provide exception handling mechanism.

 3.how: If an error condition occurs is predictable, if we need to use treatment, prevention before the error occurred; condition if an error occurs is unpredictable, you need to use try ... except, in error after processing occurs

# Basic syntax of 
try: 
    code block to be detected 
except exception types: 
    the try in the event of an anomaly is detected, the logic executed at this location

 Extended:

#1 异常类只能用来处理指定的异常情况,如果非指定异常则无法处理。
s1 = 'hello'
try:
    int(s1)
except IndexError as e: # 未捕获到异常,程序直接报错
    print e

#2 多分支
s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)

#3 万能异常Exception
s1 = 'hello'
try:
    int(s1)
except Exception as e:
    print(e)

#4 多分支异常与万能异常
#4.1 如果你想要的效果是,无论出现什么异常,我们统一丢弃,或者使用同一段代码逻辑去处理他们,那么骚年,大胆的去做吧,只有一个Exception就足够了。
#4.2 如果你想要的效果是,对于不同的异常我们需要定制不同的处理逻辑,那就需要用到多分支了。

#5 也可以在多分支后来一个Exception
s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
except Exception as e:
    print(e)

#6 异常的其他机构
s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
#except Exception as e:
#    print(e)
else:
    print('try内代码块没有异常则执行我')
finally:
    print('无论异常与否,都会执行该模块,通常是进行清理工作')

#7 主动触发异常
try:
    raise TypeError('类型错误')
except Exception as e:
    print(e)

#8 自定义异常
class EgonException(BaseException):
    def __init__(self,msg):
        self.msg=msg
    def __str__(self):
        return self.msg

try:
    raise EgonException('类型错误')
except EgonException as e:
    print(e)

#9 断言:assert 条件
assert 1 == 1  
assert 1 == 2

#10 总结try..except

1:把错误处理和真正的工作分开来
2:代码更易组织,更清晰,复杂的工作任务更容易实现;
3:毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了;

  

 

  

 

Guess you like

Origin www.cnblogs.com/ftxy/p/11789461.html