Существенно, ли исключение должно быть обработано или не является свойством вызывающая сторона , а не функции.
, Например, в некоторых программах нет никакого значения в обработке IOException (полагайте, что специальные утилиты командной строки выполняют данные, уплотняющие; они никогда не собираются быть используемыми "пользователем", они - инструменты специалиста, используемые людьми специалиста). В некоторых программах существует значение в обработке IOException в точке "рядом" к вызову (возможно, если Вы получите FNFE для своего файла конфигурации, то Вы будете ронять к некоторым значениям по умолчанию или смотреть в другом месте или чем-то вроде той природы). В других программах Вы хотите, чтобы он пузырился длинный путь, прежде чем это обработало (например, Вы могли бы хотеть, чтобы он прервался, пока это не достигает UI, в которой точке это должно предупредить пользователя, что что-то пошло не так, как надо.
Каждый из этих случаев зависит от приложение , а не библиотека . И все же с контролируемыми исключительными ситуациями это библиотека , который принимает решение. Библиотека Java IO принимает решение, что это будет использовать контролируемые исключительные ситуации (которые сильно поощряют обрабатывать, это локально для вызова), когда в некоторых программах лучшая стратегия может быть нелокальной обработкой или никакой обработкой вообще.
Это показывает реальный дефект с контролируемыми исключительными ситуациями на практике, и это намного более фундаментально, чем поверхностное (хотя также важный) дефект, что слишком много людей запишут глупые обработчики исключений только для создания компилятора закрытым. Проблемой, которую я описываю, является проблема, даже когда испытано, добросовестные разработчики пишут программу.
Да, такая вещь вроде как существует, хотя на данный момент это очень теоретически. Это называется гомоморфным шифрованием. Вот статья о достижениях IBM и , есть комментарий об этом в блоге Брюса Шнайера .
По сути, система гомоморфного шифрования - это система, в которой:
decrypt (f (encrypt (plaintext))) = f (plaintext)
На самом деле, совсем недавно кто-то решил проблему так называемого Полностью гомоморфного шифрования . Я не криптограф, но, насколько я понимаю, основная идея заключается в том, что кто-то может выполнять действия с зашифрованными данными , даже не зная, что это за данные , и эти действия действительно будут иметь значение (т. Е. Когда данные расшифровываются, произойдут анологичные изменения).
Долгое время это была открытая проблема в криптографии, и теперь, когда она решена, технически кто-то может сделать что-то подобное тому, что вы предлагаете. Например, вы можете загружать данные для серверов Amazon для работы, они могут выполнять какой-то алгоритм, который очень специально разработан, а затем отправлять обратно ваши новые данные. (Я не знаю, есть ли там
Вот еще несколько вещей, которые вы, возможно, захотите прочитать:
http://en.wikipedia.org/wiki/Secure_multi-party_computation
http: //www.cs. uiuc.edu/homes/rosulek/pubs/enc-data/enc-data.pdf
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.35.5151
Другие уже указывали на теоретические возможности полностью гомоморфного шифрования, но я хотел бы отметить, что (секретный ввод, секретный вывод, несекретная программа) может использоваться для mke a (секретный ввод, секретный вывод, секретная программа) -система: просто пусть несекретная программа будет интерпретатором для некоторого универсального языка и использовать (фактическую программу, ввод) как ввод для несекретной программы.
Конечно, гораздо более практичным решением был бы стандартный компьютер, встроенный в защищенный от взлома корпус и сертифицированный независимой третьей стороной.