No es por hinchar, pero acerca de... > Pero en este caso, estamos hablando de artefactos que de por sí ya son de bajo nivel: un stdioFileStream y la librería de base que se conecta al SO. ¿Qué chances tienen esos artefactos de resolver la excepción, aunque se genera en su contexto? NINGUNA. No hay nada interesante que puedan hacer, aunque sí muchas cosas molestas y peligrosas.
tengo un contraejemplo interesante. Con Microsoft nunca se sabe que error tiran funciones como WriteFile(). http://msdn.microsoft.com/en-us/library/aa365747%28VS.85%29.aspx Lo unico que dice la documentacion es "si falla, llama a GetLastError() para ver que paso". Ok, pero cuales de los ~600 errores posibles puede suceder con WriteFile()? Uno de los errores que puede occurrir es ERROR_NO_SYSTEM_RESOURCES, error numero 1450. En ese caso, una excepcion bien puesta te puede resolver el error en la imagen. Basicamente, el tema es que no se puede escribir un archivo por red en bloques de mas de 64mb - 32kb + 16 bytes. Por supuesto, ese limite no esta documentado, asi que el codigo tiene que ir tratando escrituras cada vez mas chicas hasta llegar a 1 byte... grrr... /* * When writing files over the network, the Windows API may fail if the * write block is so large that not enough memory can be allocated to * buffer the write. Unfortunately, using unbuffered writes would either * cause a major slowdown in cases where buffering works, and depending * on the way this is done a 512 byte boundary on read/write amounts and * memory buffer locations may be imposed. To work around this limitation, * [this function] calls itself halving each write until the write succeeds. A * failure to write a single byte is treated as a condition to assume the * write is not possible at all, at which point [this function] fails. The only * error for which this is done is ERROR_NO_SYSTEM_RESOURCES, value 1450. * * For more information, see the following links. * http://support.microsoft.com/kb/913872 * http://support.microsoft.com/kb/99794 * http://msdn.microsoft.com/en-us/library/cc644950(VS.85).aspx * http://msdn.microsoft.com/en-us/library/aa365747(VS.85).aspx * http://msdn.microsoft.com/en-us/library/aa364439.aspx * */ En los casos en que este codigo tiene que estar en la imagen, esta bueno poner el codigo en el default handler de un exception apropiado porque asi solo hay que escribirlo una vez. Dicho sea de paso, este es otro ejemplo de cosas que estan en una VM, y que no tienen nada que ver con ejecutar bytecodes. Andres. -- To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] http://www.clubSmalltalk.org
