Python论坛  - 讨论区

标题:[python-chinese] 不知道一个函数会抛什么异常

2007年07月30日 星期一 10:37

jinq0123在163.com jinq0123在163.com
星期一 七月 30 10:37:22 HKT 2007

从帮助文档看,不知道一个函数会不会抛异常,抛什么类型的异常,是不是很麻烦?

我觉得是。

如我在最外层接Ctrl-C的KeyboardInterrupt, 做一些保存和清理。在内层就不能 
无声地吃掉这个异常。可以重新抛出该异常,或者不要except: pass接所有异常, 
无论哪一方法都是很麻烦。

我还是更喜欢无异常的函数。抛异常的函数适合有异常就退出这样的编程模式,不 
适合写无人值守的服务型程序。

其它编程语言也面临异常无法预测的问题。



[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年07月30日 星期一 10:47

limodou limodou在gmail.com
星期一 七月 30 10:47:44 HKT 2007

On 7/30/07, jinq0123在163.com <jinq0123在163.com> wrote:
> 从帮助文档看,不知道一个函数会不会抛异常,抛什么类型的异常,是不是很麻烦?
>
> 我觉得是。
>
> 如我在最外层接Ctrl-C的KeyboardInterrupt, 做一些保存和清理。在内层就不能
> 无声地吃掉这个异常。可以重新抛出该异常,或者不要except: pass接所有异常,
> 无论哪一方法都是很麻烦。
>
> 我还是更喜欢无异常的函数。抛异常的函数适合有异常就退出这样的编程模式,不
> 适合写无人值守的服务型程序。
>
> 其它编程语言也面临异常无法预测的问题。
>
一般在文档中都会有说明。而且有时可以先把异常记录到日志中去,然后事后进行分析后再进行完善。

-- 
I like python!
UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad
My Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年07月30日 星期一 12:27

jinq0123在163.com jinq0123在163.com
星期一 七月 30 12:27:41 HKT 2007

limodou wrote:
> On 7/30/07, jinq0123在163.com <jinq0123在163.com> wrote:
>   
>> 从帮助文档看,不知道一个函数会不会抛异常,抛什么类型的异常,是不是很麻烦?
>>
>> 我觉得是。
>>
>> 如我在最外层接Ctrl-C的KeyboardInterrupt, 做一些保存和清理。在内层就不能
>> 无声地吃掉这个异常。可以重新抛出该异常,或者不要except: pass接所有异常,
>> 无论哪一方法都是很麻烦。
>>
>> 我还是更喜欢无异常的函数。抛异常的函数适合有异常就退出这样的编程模式,不
>> 适合写无人值守的服务型程序。
>>
>> 其它编程语言也面临异常无法预测的问题。
>>
>>     
> 一般在文档中都会有说明。而且有时可以先把异常记录到日志中去,然后事后进行分析后再进行完善。
>
>   
一般只是说明本函数自己抛的异常,不会说明它调用了哪些可能抛异常的函数。
测试只能记录到部份异常,大多数异常仅是偶然才出,这样发布的程序很脆弱。



[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年07月30日 星期一 15:31

Shao Feng sevenever在gmail.com
星期一 七月 30 15:31:48 HKT 2007

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Java里面的throws语句是不是强制调用者处理本函数抛出的异常啊?如果不处理编译会不过的。

感觉都应该用throws语句。

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (MingW32)
Comment: http://firegpg.tuxfamily.org

iQEVAwUBRq2T/0p7xV8UCS1lAQK3GAf+IMUlDiwdznOky4ne3obz70yAsqIqrLvv
aAt23R6Z/QBTw7pgTDkArgmc0WTl6me4G3c0ik+aXzvEttic5TIFUNlPj4/XLd4w
U8D5XNHt4B2re/TIZxkXdeZko6SHYmW0j6d9GHbVU97tz5AbXOb1GubADoZGrk7j
TD+619lS71z6eOqYfj7IOcH6YNKtoYYi+ZpCUIAaIsHzXGvIyWqnomlKSDGU6wXw
u3VDC8AkF8NuBtexfVeo76aHGvd60oxHpO9Rt9mmxp+uFChnAS7gH9V7vDJq7q5V
PL5V37JichMTbghrVNGI/ErX5OukMhXles4REP3xhGDyHgjHQSnjAg==
=FLNn
-----END PGP SIGNATURE-----
On 7/30/07, jinq0123在163.com <jinq0123在163.com> wrote:
>
> limodou wrote:
> > On 7/30/07, jinq0123在163.com <jinq0123在163.com> wrote:
> >
> >> 从帮助文档看,不知道一个函数会不会抛异常,抛什么类型的异常,是不是很麻烦?
> >>
> >> 我觉得是。
> >>
> >> 如我在最外层接Ctrl-C的KeyboardInterrupt, 做一些保存和清理。在内层就不能
> >> 无声地吃掉这个异常。可以重新抛出该异常,或者不要except: pass接所有异常,
> >> 无论哪一方法都是很麻烦。
> >>
> >> 我还是更喜欢无异常的函数。抛异常的函数适合有异常就退出这样的编程模式,不
> >> 适合写无人值守的服务型程序。
> >>
> >> 其它编程语言也面临异常无法预测的问题。
> >>
> >>
> > 一般在文档中都会有说明。而且有时可以先把异常记录到日志中去,然后事后进行分析后再进行完善。
> >
> >
> 一般只是说明本函数自己抛的异常,不会说明它调用了哪些可能抛异常的函数。
> 测试只能记录到部份异常,大多数异常仅是偶然才出,这样发布的程序很脆弱。
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20070730/f91cc7c6/attachment-0001.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年07月30日 星期一 15:33

Shao Feng sevenever在gmail.com
星期一 七月 30 15:33:17 HKT 2007

晕,刚才签名用错密钥了。

On 7/30/07, Shao Feng <sevenever在gmail.com> wrote:
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Java里面的throws语句是不是强制调用者处理本函数抛出的异常啊?如果不处理编译会不过的。
>
> 感觉都应该用throws语句。
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.5 (MingW32)
> Comment: http://firegpg.tuxfamily.org
>
> iQEVAwUBRq2T/0p7xV8UCS1lAQK3GAf+IMUlDiwdznOky4ne3obz70yAsqIqrLvv
> aAt23R6Z/QBTw7pgTDkArgmc0WTl6me4G3c0ik+aXzvEttic5TIFUNlPj4/XLd4w
> U8D5XNHt4B2re/TIZxkXdeZko6SHYmW0j6d9GHbVU97tz5AbXOb1GubADoZGrk7j
> TD+619lS71z6eOqYfj7IOcH6YNKtoYYi+ZpCUIAaIsHzXGvIyWqnomlKSDGU6wXw
> u3VDC8AkF8NuBtexfVeo76aHGvd60oxHpO9Rt9mmxp+uFChnAS7gH9V7vDJq7q5V
> PL5V37JichMTbghrVNGI/ErX5OukMhXles4REP3xhGDyHgjHQSnjAg==
> =FLNn
> -----END PGP SIGNATURE-----
> On 7/30/07, jinq0123在163.com <jinq0123在163.com> wrote:
> >
> > limodou wrote:
> > > On 7/30/07, jinq0123在163.com <jinq0123在163.com> wrote:
> > >
> > >> 从帮助文档看,不知道一个函数会不会抛异常,抛什么类型的异常,是不是很麻烦?
> > >>
> > >> 我觉得是。
> > >>
> > >> 如我在最外层接Ctrl-C的KeyboardInterrupt, 做一些保存和清理。在内层就不能
> > >> 无声地吃掉这个异常。可以重新抛出该异常,或者不要except: pass接所有异常,
> > >> 无论哪一方法都是很麻烦。
> > >>
> > >> 我还是更喜欢无异常的函数。抛异常的函数适合有异常就退出这样的编程模式,不
> > >> 适合写无人值守的服务型程序。
> > >>
> > >> 其它编程语言也面临异常无法预测的问题。
> > >>
> > >>
> > > 一般在文档中都会有说明。而且有时可以先把异常记录到日志中去,然后事后进行分析后再进行完善。
> > >
> > >
> > 一般只是说明本函数自己抛的异常,不会说明它调用了哪些可能抛异常的函数。
> > 测试只能记录到部份异常,大多数异常仅是偶然才出,这样发布的程序很脆弱。
> >
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
>
>
>
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20070730/77c1dc3a/attachment-0001.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年07月30日 星期一 15:41

wyh wyhross在gmail.com
星期一 七月 30 15:41:26 HKT 2007

Éú³ÉµÄÀàʵÀý±»¶à¸ö¶ÔÏóÒýÓÃ.ÊDz»ÊÇËùÓжÔÏóµÄÒýÓö¼ÇåÀíºó¸ÃʵÀý²Å»á±»ÏµÍ³»ØÊÕ?
Èç:
   class a:
       def __init__(self):
             self.name='a'
      def print_a(self,str)
            print str
  
  a_1=a()
  b={}
  b['a']=a_1
  del a_1
  b['a'].print_a('a not dead!')
  
 Êä³ö:
 a not dead!
 




wyh
2007-07-30
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070730/b4fbb28b/attachment-0001.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年07月30日 星期一 18:59

Zoom.Quiet zoom.quiet在gmail.com
星期一 七月 30 18:59:23 HKT 2007

On 7/30/07, wyh <wyhross在gmail.com> wrote:
>
>
> 生成的类实例被多个对象引用.是不是所有对象的引用都清理后该实例才会被系统回收?
早有文档
http://blog.donews.com/lemur/archive/2005/12/17/661841.aspx

> 如:
>    class a:
>        def __init__(self):
>              self.name='a'
>       def print_a(self,str)
>             print str
>
>   a_1=a()
>   b={}
>   b['a']=a_1
>   del a_1
>   b['a'].print_a('a not dead!')
>
>  输出:
>  a not dead!
>
>
>
>  ________________________________
>
> wyh
> 2007-07-30
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request在lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>


-- 
'''Time is unimportant, only life important!
过程改进的目标不是高品质产品,而是促生靠谱的人的组织!
'''
http://zoomquiet.org
blog在http://blog.zoomquiet.org/pyblosxom/
wiki在http://wiki.woodpecker.org.cn/moin/ZoomQuiet
or http://202.108.44.62/moin/ZoomQuiet
scrap在http://floss.zoomquiet.org
douban在http://www.douban.com/people/zoomq/
____________________________________
Pls. use OpenOffice.org to replace M$ Office.
     http://zh.openoffice.org
Pls. use 7-zip to replace WinRAR/WinZip.
     http://7-zip.org/zh-cn/
You can get the truely Freedom 4 software.

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年07月31日 星期二 14:31

jinq0123在163.com jinq0123在163.com
星期二 七月 31 14:31:09 HKT 2007

有个throws说明就明白多了。相当于强制文档。

Shao Feng wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Java里面的throws语句是不是强制调用者处理本函数抛出的异常啊?如果不处理 
> 编译会不过的。
>
> 感觉都应该用throws语句。
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.5 (MingW32)
> Comment: http://firegpg.tuxfamily.org
>
> iQEVAwUBRq2T/0p7xV8UCS1lAQK3GAf+IMUlDiwdznOky4ne3obz70yAsqIqrLvv
> aAt23R6Z/QBTw7pgTDkArgmc0WTl6me4G3c0ik+aXzvEttic5TIFUNlPj4/XLd4w
> U8D5XNHt4B2re/TIZxkXdeZko6SHYmW0j6d9GHbVU97tz5AbXOb1GubADoZGrk7j
> TD+619lS71z6eOqYfj7IOcH6YNKtoYYi+ZpCUIAaIsHzXGvIyWqnomlKSDGU6wXw
> u3VDC8AkF8NuBtexfVeo76aHGvd60oxHpO9Rt9mmxp+uFChnAS7gH9V7vDJq7q5V
> PL5V37JichMTbghrVNGI/ErX5OukMhXles4REP3xhGDyHgjHQSnjAg==
> =FLNn
> -----END PGP SIGNATURE-----
> On 7/30/07, *jinq0123在163.com jinq0123在163.com>* 
> <jinq0123在163.com jinq0123在163.com>> wrote:
>
>     limodou wrote:
>     > On 7/30/07, jinq0123在163.com jinq0123在163.com>
>     <jinq0123在163.com jinq0123在163.com>> wrote:
>     >
>     >> 从帮助文档看,不知道一个函数会不会抛异常,抛什么类型的异常,是
>     不是很麻烦?
>     >>
>     >> 我觉得是。
>     >>
>     >> 如我在最外层接Ctrl-C的KeyboardInterrupt, 做一些保存和清理。在内
>     层就不能
>     >> 无声地吃掉这个异常。可以重新抛出该异常,或者不要except: pass接
>     所有异常,
>     >> 无论哪一方法都是很麻烦。
>     >>
>     >> 我还是更喜欢无异常的函数。抛异常的函数适合有异常就退出这样的编
>     程模式,不
>     >> 适合写无人值守的服务型程序。
>     >>
>     >> 其它编程语言也面临异常无法预测的问题。
>     >>
>     >>
>     > 一般在文档中都会有说明。而且有时可以先把异常记录到日志中去,然后
>     事后进行分析后再进行完善。
>     >
>     >
>     一般只是说明本函数自己抛的异常,不会说明它调用了哪些可能抛异常的函数。
>     测试只能记录到部份异常,大多数异常仅是偶然才出,这样发布的程序很脆
>     弱。
>
>
>     _______________________________________________
>     python-chinese
>     Post: send python-chinese在lists.python.cn
>     python-chinese在lists.python.cn>
>     Subscribe: send subscribe to
>     python-chinese-request在lists.python.cn
>     python-chinese-request在lists.python.cn>
>     Unsubscribe: send unsubscribe
>     to  python-chinese-request在lists.python.cn
>     python-chinese-request在lists.python.cn>
>     Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese




[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年07月31日 星期二 14:36

jinq0123在163.com jinq0123在163.com
星期二 七月 31 14:36:36 HKT 2007

引用计数为0时进行回收。

wyh wrote:
> 生成的类实例被多个对象引用.是不是所有对象的引用都清理后该实例才会被系
> 统回收?
> 如:
> class a:
> def __init__(self):
> self.name='a'
> def print_a(self,str)
> print str
> a_1=a()
> b={}
> b['a']=a_1
> del a_1
> b['a'].print_a('a not dead!')
> 输出:
> a not dead!
> ------------------------------------------------------------------------
> wyh
> 2007-07-30
> ------------------------------------------------------------------------
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese




[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号