<div dir="ltr"><div class="markdown-here-wrapper" style><blockquote style="margin:1.2em 0px;border-left-width:4px;border-left-style:solid;border-left-color:rgb(221,221,221);padding:0px 1em;color:rgb(119,119,119);quotes:none">
<p style="margin:1.2em 0px!important">But the errors I’m talking about are even more benign.</p>
</blockquote>
<p style="margin:1.2em 0px!important">I’m not sure I would trust a framework to distinguish between which errors are benign and which will take my money.</p>
<div title="MDH:Jmd0O8KgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1z
aXplOiAxM3B4OyI+QnV0IHRoZSBlcnJvcnMgSSdtIHRhbGtpbmcgYWJvdXQgYXJlIGV2ZW4gbW9y
ZSBiZW5pZ24uPC9zcGFuPjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbCwgc2Fu
cy1zZXJpZjsgZm9udC1zaXplOiAxM3B4OyI+PGJyPjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0
eWxlPSJmb250LWZhbWlseTogYXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTNweDsiPkkn
bSBub3Qgc3VyZSBJIHdvdWxkIHRydXN0IGEgZnJhbWV3b3JrIHRvIGRpc3Rpbmd1aXNoIGJldHdl
ZW4gd2hpY2ggZXJyb3JzIGFyZSBiZW5pZ24gYW5kIHdoaWNoIHdpbGwgdGFrZSBteSBtb25leS48
YnI+PC9zcGFuPjwvZGl2Pg==" style="height:0;font-size:0em;padding:0;margin:0">​</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 30 September 2014 18:55, Chris Colbert <span dir="ltr"><<a href="mailto:sccolbert@gmail.com" target="_blank">sccolbert@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Tue, Sep 30, 2014 at 1:03 PM, Marcus Ottosson <span dir="ltr"><<a href="mailto:konstruktion@gmail.com" target="_blank">konstruktion@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><span><blockquote style="margin:1.2em 0px;border-left-width:4px;border-left-style:solid;border-left-color:rgb(221,221,221);padding:0px 1em;color:rgb(119,119,119);quotes:none">
<p style="margin:1.2em 0px!important">Imagine a case where a finance app developer misspells some attribute like palette and has insufficient test coverage. Crashing the app in the middle of trade execution is a much worse outcome than failing to color the line edit correctly.</p>
</blockquote>
</span><p style="margin:1.2em 0px!important">On the other hand, misspelling in this scenario could lead to the wrong results not getting noticed until it’s much too late, in which case failing fast costs less.</p></div></div></blockquote></span><div>This really depends on the situation. If the market is volatile, you're talking enormous sums of money potentially lost every minute. It's better to catch the error during trade reconciliation and correct it then. </div><div><br></div><div>But the errors I'm talking about are even more benign. The kind of thing where someone thinks "oh, this is just a cosmetic change" or "let me just fix the spelling of this label" and then think "it's so small I don't need to test the change". Rarely does it effect the core business logic, but under the proposed changes, it would keep the app from running at all.</div><div><div class="h5"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>
<p style="margin:1.2em 0px!important">I don’t think there is any right or wrong answer here, I’d vouch for sticking with what is the most Pythonic and leave C++ to C++.</p>
<p style="margin:1.2em 0px!important">Best,<br>Marcus</p>
<div title="MDH:Jmd0O8KgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1z
aXplOiAxM3B4OyI+SW1hZ2luZSBhIGNhc2Ugd2hlcmUgYSBmaW5hbmNlIGFwcCBkZXZlbG9wZXIg
bWlzc3BlbGxzIHNvbWUgYXR0cmlidXRlIGxpa2UgcGFsZXR0ZSBhbmQgaGFzIGluc3VmZmljaWVu
dCB0ZXN0IGNvdmVyYWdlLiBDcmFzaGluZyB0aGUgYXBwIGluIHRoZSBtaWRkbGUgb2YgdHJhZGUg
ZXhlY3V0aW9uIGlzIGEgbXVjaCB3b3JzZSBvdXRjb21lIHRoYW4gZmFpbGluZyB0byBjb2xvciB0
aGUgbGluZSBlZGl0IGNvcnJlY3RseS48L3NwYW4+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6IGFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEzcHg7Ij48YnI+PC9zcGFuPjwvZGl2
PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1z
aXplOiAxM3B4OyI+T24gdGhlIG90aGVyIGhhbmQsIG1pc3NwZWxsaW5nIGluIHRoaXMgc2NlbmFy
aW8gY291bGQgbGVhZCB0byB0aGUgd3JvbmcgcmVzdWx0cyBub3QgZ2V0dGluZyBub3RpY2VkIHVu
dGlsIGl0J3MgbXVjaCB0b28gbGF0ZSwgaW4gd2hpY2ggY2FzZSBmYWlsaW5nIGZhc3QgY29zdHMg
bGVzcy48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsLCBz
YW5zLXNlcmlmOyBmb250LXNpemU6IDEzcHg7Ij48YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4g
c3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxM3B4OyI+
SSBkb24ndCB0aGluayB0aGVyZSBpcyBhbnkgcmlnaHQgb3Igd3JvbmcgYW5zd2VyIGhlcmUsIEkn
ZCB2b3VjaCBmb3Igc3RpY2tpbmcgd2l0aCB3aGF0IGlzIHRoZSBtb3N0IFB5dGhvbmljIGFuZCBs
ZWF2ZSBDKysgdG8gQysrLjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LWZhbWls
eTogYXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTNweDsiPjxicj48L3NwYW4+PC9kaXY+
PGRpdj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNp
emU6IDEzcHg7Ij5CZXN0LDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LWZhbWls
eTogYXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTNweDsiPk1hcmN1czwvc3Bhbj48L2Rp
dj4=" style="min-height:0;font-size:0em;padding:0;margin:0">​</div></div></div><div class="gmail_extra"><div><div><br><div class="gmail_quote">On 30 September 2014 17:52, Chris Colbert <span dir="ltr"><<a href="mailto:sccolbert@gmail.com" target="_blank">sccolbert@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">I'm strongly -1 on this.</p>
<p dir="ltr">I think exceptions should be handled consistently throughout the library. So if you were to make this change for virtual functions, it should also be made for signal handlers. But, user code excepting on the path of a signal handler or a virtual event method is very common in my experience, and not all of these exceptions prohibit the app from continuing to function. </p>
<p dir="ltr">Fataling the app, on the other hand, would lead to absolute mayhem on the production floor. </p>
<p dir="ltr">Imagine a case where a finance app developer misspells some attribute like palette and has insufficient test coverage. Crashing the app in the middle of trade execution is a much worse outcome than failing to color the line edit correctly.</p>
<p dir="ltr">It would be nice to have an easier way than except hooks to be able to detect and handle these cases, and I think exploring options in that space is worthy of discussion. But I think qFatal is certainly the wrong approach here.<br>
</p><div><div>
<div class="gmail_quote">On Sep 30, 2014 12:24 PM, "Phil Thompson" <<a href="mailto:phil@riverbankcomputing.com" target="_blank">phil@riverbankcomputing.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Florian asked this question but it didn't result in any discussion, so I'd like to have another poke at it.<br>
<br>
Currently, if an exception is raised by a Python re-implementation of a C++ virtual then the exception is printed and the application continues. A default result will be constructed by PyQt and returned to C++. Instead, should PyQt print the exception and then terminate (by calling qFatal())?<br>
<br>
Some advantages...<br>
<br>
- consistency in what happens when an unhandled exception is raised (ie. the application always terminates)<br>
- such bugs become obvious and easy to find<br>
<br>
Some disadvantages...<br>
<br>
- incompatible with current behaviour<br>
- may cause problems with applications that already try to handle such exceptions using exception hooks<br>
<br>
If I make this change it will be for PyQt5 only. I don't plan to make the change configurable in any way.<br>
<br>
Comments?<br>
<br>
Phil<br>
______________________________<u></u>_________________<br>
PyQt mailing list    <a href="mailto:PyQt@riverbankcomputing.com" target="_blank">PyQt@riverbankcomputing.com</a><br>
<a href="http://www.riverbankcomputing.com/mailman/listinfo/pyqt" target="_blank">http://www.riverbankcomputing.<u></u>com/mailman/listinfo/pyqt</a></blockquote></div>
</div></div><br>_______________________________________________<br>
PyQt mailing list    <a href="mailto:PyQt@riverbankcomputing.com" target="_blank">PyQt@riverbankcomputing.com</a><br>
<a href="http://www.riverbankcomputing.com/mailman/listinfo/pyqt" target="_blank">http://www.riverbankcomputing.com/mailman/listinfo/pyqt</a><br></blockquote></div><br><br clear="all"><div><br></div></div></div><span><font color="#888888">-- <br><div dir="ltr"><font size="1"><b>Marcus Ottosson</b><br><a href="mailto:konstruktion@gmail.com" target="_blank">konstruktion@gmail.com</a></font><font size="1"><br></font></div>
</font></span></div>
</blockquote></div></div></div><br></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><font size="1"><b>Marcus Ottosson</b><br><a href="mailto:konstruktion@gmail.com" target="_blank">konstruktion@gmail.com</a></font><font size="1"><br></font></div>
</div>