try except 常见的问题

try excep 用于抛出错误,注意,所用的抛出部分(except)应该在代码的最后部分,而不是在代码之中。
比如说这样

try:
            houzhuiming = self.dizhi.split('.', 1)
        #这里需要一个抛错来解决输入的东西是乱打的
            houzhuiming = houzhuiming[1]
        #这里需要做一个抛错来解决文件不存在,或者解码格式错误
        except IndexError as f:
            print("你好像输入了一个错误的值")
            shur(self)
            if houzhuiming == "csv":
                print("经检验你输入的应该是一个csv文件")
                if len(self.jiema) >0 :
                    shuju = pd.read_csv(dizhi)
                    neirong=shuju
                if len(self.jiema)==0:
                    shuju=pd.read_csv(dizhi,encoding="utf-8")
                    neirong=shuju
        except FileNotFoundError as e:
            print("你好像输入了错误的地址")
            shur(self)
        except ValueError as w:
            print("你好像输入了错误的解码方法")
            if houzhuiming == "xlsx":
                print("你输入的应该是一个xlsx文件")
                if len(self.jiema) > 0:
                    shuju = pd.read_csv(self.dizhi)
                    neirong = shuju
                if len(jiema) == 0:
                    shuju = pd.read_csv(self.dizhi, encoding="utf-8")
                    neirong = shuju
        except FileNotFoundError as e:
                print("你好像输入了错误的地址,请重新输入")
                shur(self)
        except ValueError as w:
            print("你好像输入了错误的解码方法,请重新输入")
            shur(self)


这样的抛错就是错误的,在代码解释上,编译器遇到错误后,只会返回第一个except。
如果该except没有抛出相关的错误的话,这个代码还是会进行。但是不会报错了

正确应该是这样

   try:
            houzhuiming = self.dizhi.split('.', 1)
            #这里需要一个抛错来解决输入的东西是乱打的
            houzhuiming = houzhuiming[1]
        #这里需要做一个抛错来解决文件不存在,或者解码格式错误

            if houzhuiming == "csv":
                print("经检验你输入的应该是一个csv文件")
                if len(self.jiema) >0 :
                    shuju = pd.read_csv(dizhi,encoding=self.jiema)
                    neirong=shuju
                    print(neirong)
                if len(self.jiema)==0:
                    shuju=pd.read_csv(dizhi,encoding="utf-8")
                    neirong=shuju
                    print(neirong)


            if houzhuiming == "xlsx":
                print("你输入的应该是一个xlsx文件")
                if len(self.jiema) > 0:
                    shuju = pd.read_csv(self.dizhi,encoding=self.jiema)
                    neirong = shuju
                if len(self.jiema) == 0:
                    shuju = pd.read_csv(self.dizhi, encoding="utf-8")
                    neirong=shuju
                    print(neirong)

        except FileNotFoundError:
            print("你好像输入了错误的地址,请重新输入")
            a = diyibuf
            a.shur()
        except LookupError :
            print("你好像输入了错误的解码方法,请重新输入")
            a = diyibuf
            a.shur()
        except IndexError :
            print("你好像输入了一个错误的值")
            a=diyibuf
            a.shur()

所有的except都应该在代码的末尾部分。这样才算正确的

<think>嗯,用户问的是try catch和try except的区别。我需要先回忆一下这两种结构的用法和它们所在的编程语言。 首先,我记得try catch常见于像Java、C++和JavaScript这些语言中,而try except则是Python里的用法。用户可能在不同的语言中见过这两种结构,想了解它们之间的区别。不过,可能用户不太确定它们是不是同一概念的不同叫法,还是有其他差异。 接下来,我得确认语法上的不同。在Java中,catch后面需要跟具体的异常类型,而Python的except也是一样的结构。可能它们的语法结构相似,但关键字不同,因为语言本身的差异。 然后,异常处理机制的细节。比如Java的检查型异常必须在编译时处理,而Python没有这样的机制。这可能是一个关键点,用户可能在使用不同语言时遇到这方面的困扰。 还要考虑到用户可能的实际应用场景。比如他们可能在学Python或者Java,遇到错误处理的问题,想知道如何正确使用try语句。需要解释清楚不同语言中的异常处理方式,以及关键字的不同。 另外,用户可能对异常处理的通用概念不太清楚,需要区分语法差异和语言特性的不同。比如,是否允许多个catch/except块,或者finally的用法是否一致。 最后,要确保回答结构清晰,分点说明,帮助用户逐步理解两者的区别,同时避免技术术语过于复杂,让初学者也能明白。</think>### try...catch 与 try...except 的区别 `try...catch` 和 `try...except` 是不同编程语言中用于**异常处理**的语法结构,核心逻辑相同,但语法和细节因语言而异。以下是详细对比: --- #### 1. **语言归属不同** - **`try...catch`** 主要用于 **Java、C++、JavaScript、C#** 等语言。 示例(Java): ```java try { // 可能出错的代码 } catch (ExceptionType e) { // 处理异常 } finally { // 最终执行(可选) } ``` - **`try...except`** 是 **Python** 的异常处理语法。 示例(Python): ```python try: # 可能出错的代码 except ExceptionType as e: # 处理异常 finally: # 最终执行(可选) ``` --- #### 2. **语法差异** - **`catch` vs `except`** - `catch` 是 Java/C++ 等语言的关键字,后接异常类型和变量。 - `except` 是 Python 的关键字,功能相同,但语法更简洁。 - **多异常捕获** - **Java/C++**:需为每个异常类型单独写 `catch` 块。 ```java try { ... } catch (IOException e) { ... } catch (NullPointerException e) { ... } ``` - **Python**:可在单行用元组捕获多个异常。 ```python try: ... except (ValueError, TypeError) as e: ... ``` --- #### 3. **异常类型处理** - **Java/C++** 区分**检查型异常**(Checked Exceptions),必须显式处理(捕获或抛出),否则编译报错。 例如:`IOException` 必须被处理。 - **Python** 所有异常均为**非检查型异常**(Unchecked Exceptions),不强制处理,依赖开发者主动捕获。 --- #### 4. **其他特性** - **`else` 分支(Python 特有)** Python 支持 `try...except...else`,`else` 中的代码在无异常时执行。 ```python try: ... except: ... else: # 无异常时执行 print("No error!") ``` - **`finally` 的通用性** 两者均支持 `finally` 块,无论是否发生异常都会执行。 --- ### 总结表 | 特性 | `try...catch` (Java/C++/JS) | `try...except` (Python) | |---------------------|----------------------------------|----------------------------------| | 关键字 | `catch` | `except` | | 多异常捕获 | 需多个 `catch` 块 | 单行元组形式 `except (E1, E2)` | | 检查型异常 | 存在(必须处理) | 不存在 | | 附加语法 | 无 | 支持 `else` 分支 | --- ### 使用建议 - 若用 **Java/C++/JS**,优先使用 `try...catch`,注意检查型异常。 - 若用 **Python**,选择 `try...except`,灵活利用 `else` 和 `finally` 优化逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值