On Monday, 1 April 2013 at 21:39:18 UTC, Dmitry Olshansky wrote:
01-Apr-2013 23:46, Lars T. Kyllingstad пишет:
On Monday, 1 April 2013 at 18:40:48 UTC, Dmitry Olshansky wrote:
2. ProcessException is IMHO a system exception. Plus some RTOses systems may not have processes in the usaul POSIX sense. It needs some
thought.

Well, I *don't* think ProcessException is a SystemException. :) And if druntime/Phobos is to be used on OSes that don't have processes, there are other adaptations that have to be made that are probably more
fundamental.

Okay. I guess all of this goes to "Embedded D"/"D Lite" kind of spec.

Last thing - why separating ThreadException vs ProcessException and should they have some base class? Just asking to see the rationale behind it that is missing from DIP currently.

Well, I hadn't even considered that the same exception could be used for both. I see the similarity between processes and threads, but I also think there is a difference in how/when/where you want to deal with errors related to them. Say you have a function that starts a new process and then spawns a new thread to monitor it, and then the function fails for some reason. This could be something you'd want to deal with on different levels, as a ProcessException could simply be that you got the wrong executable name, while a ThreadException would usually point to a much deeper issue.


4. A quiz as an extension of 3 - where a e.g. serial port exceptions would fit in this hierarchy? Including Parity errors, data overrun etc.
Let's think a bit ahead and pick names wisely.
Maybe turn NetworkException --> Comm(unication)Exception, I dunno.

Good question, I dunno either. :) I agree we should think about it.

I have thought some more about it, and a basic serial comms error should probably be an IOException. An error in a higher-level serial protocol, on the other hand, would be a NetworkException, and then the name doesn't suck so much. CommException may still be better though, or maybe ProtocolException.

8. For IOExcpetion we might consider adding an indication on which file handle the problem happened and/or if it's closed/invalid/"mostly
fine" that.

Which form do you suggest that such an indicator should take?

That's the trick - I hoped somebody will just say "aha!" and add one :)

The internal handle is hard to represent other then ... some platform specific integer value. There goes generality... Other then this there is a potential to stomp on feet of higher-level abstraction on top of that handle.

That last bit makes me reconsider the idea. While I see some potential use for it I suspect it's too niche to fit in the general hierarchy.

Bear in
mind that it should be general enough to cover all, or at least most,
kinds of I/O exceptions.

Adding a Kind that states one of:
out-of-data (read empty file)
illegalOp (reading closed file, writing read-only file/socket)
interrupted (operation was canceled by OS, connection forcibly closed, disk ejected etc.)
hardFault (OS reports hardware failure)

These are good suggestions, and seem general enough.

Lars

Reply via email to