MolExportException can indeed be thrown when generating names. One reason can be that the molecule object contains query features (for instance R groups or atom lists), in which case generating a name does not make sense. For non-query molecules, this is indeed rare (i.e. less than 0.1% of cases on typical datasets), but can still happen for very large molecules, very specific cases that are not handled yet, etc. Therefore I would advise to prepare for the occasional exception as well. Feel free to report any failure that you think should not happen.
The "traditional" option does two things. First, it will use common names when possible. For instance, it will generate 'aspirin' instead of '2-(acetyloxy)benzoic acid' for input 'CC(=O)OC1=CC=CC=C1C(O)=O'. Second, in some cases, when a systematic name is generated, it will be sligthly simpler/shorter, by using traditionally used conventions instead of strictly applying IUPAC rules.
By the way, I would recommend using just "name" instead of "name:i" for the IUPAC (non-traditional) mode, though they currently have the same behaviour. I was thinking to deprecate "name:i" to replace it with something more explicit. Is "name:i" documented somewhere?